QOwnNotes 源码构建完全指南:从 git clone 到 qmake、QtCreator 与 Nix 的三种编译路线
桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载本篇技术指南以 QOwnNotes 官方文档《Building QOwnNotes》为核心骨架系统讲解如何从源码自行构建这款纯文本 Markdown 笔记与待办事项管理器。你将掌握三条完整可用的构建路线基于release分支与git submodule的源码获取、使用 QtCreator 图形化调试构建、终端下的lrelease qmake make命令链以及借助 Nix 包管理器与 Devenv 的声明式构建方案并理解背后的项目结构与构建系统原理。从源码构建前的准备QOwnNotes 是一个采用 Qt 框架开发的桌面应用源码工程同时提供了两种构建系统基于 qmake 的工程文件 src/QOwnNotes.pro以及 CMake 构建文件 src/CMakeLists.txt。官方文档中的“从 GitHub 构建”与“终端直接构建”两条路线均以 qmake 为主而 Nix 构建默认走 CMake 路线见 default.nix 中的cmakeFlags但也可以通过USE_SYSTEM_BOTAN等 qmake 参数切换。获取源码release 分支 子模块构建的第一步是获取源码。官方文档推荐直接克隆最后一个发布版本的代码git clone https://github.com/pbek/QOwnNotes.git -b release cd QOwnNotes git submodule update --init这里有三点值得注意-b releaserelease分支始终指向最近一次发布的源码状态比使用main分支更稳定适合只想构建可运行版本的用户git submodule update --init必不可少QOwnNotes 依赖多个内置第三方库如 src/libraries/botan、src/libraries/qmarkdowntextedit、src/libraries/sonnet、src/libraries/qtkeychain 等它们以 git 子模块形式存在。从 src/QOwnNotes.pro 中的include(...)语句可以看到这些子模块通过.pri文件被直接编译进主程序当前版本号仓库根目录 src/version.h 中定义了#define VERSION 26.10.3即当前仓库对应的版本。如果你打算向项目贡献源码请将 pull request 提交到main分支并先阅读官方文档 代码贡献指南遵循其提交规范如#3568 mainwindow: allow dragging text file to import as note这样的消息格式。路线一使用 QtCreator 进行图形化构建与调试对于调试场景官方文档明确建议使用 QtCreator。由于 QOwnNotes 依赖 Qt 的 WebSocket 模块源码中 src/QOwnNotes.pro 第 7 行声明了QT ... websockets ...在使用 Qt6 构建时必须额外安装qtwebsockets包在 Windows 上应选择MinGW 64-bit工具链这是与项目 qmake 工程兼容性最好的选择而在 Linux 发行版上通常可以从软件源中直接安装 QtCreator。具体操作步骤下载并安装 Qt Creator开源离线安装包确保配套 Qt 版本包含qtwebsockets模块打开项目工程文件src/QOwnNotes.pro在菜单中点击Build/Build Project QOwnNotes。QtCreator 会自动解析 src/QOwnNotes.pro 中的全部SOURCES、HEADERS、FORMS与RESOURCES条目——该工程文件涵盖了约 300 个源文件、数十个.ui界面文件以及 images.qrc、demonotes.qrc、qownnotes.qrc 等资源文件因此首次加载工程时 QtCreator 需要一定时间完成解析。路线二终端命令行构建lrelease qmake make如果你熟悉 qmake 构建流程可以直接在终端中完成构建这也是官方文档给出的核心命令序列cd src # 构建二进制翻译文件如果你需要除英语以外的其他语言 lrelease QOwnNotes.pro # 准备构建过程并编译应用程序 qmake make各命令的作用与原理解析lrelease QOwnNotes.pro读取 src/QOwnNotes.pro 中TRANSLATIONS变量列出的约 70 个语言翻译文件如QOwnNotes_zh_CN.ts、QOwnNotes_pl.ts、QOwnNotes_de.ts等将它们编译为运行时加载的.qm二进制翻译文件。该命令来自 Qt 的qttools工具集如果只使用英语界面可以跳过qmake基于 src/QOwnNotes.pro 生成平台相关的 Makefile。qmake 会读取工程文件顶部的QT core gui widgets sql svg network xml printsupport qml websockets concurrent声明Qt6 下还会追加quick模块并根据QT_MAJOR_VERSION自动判断启用哪些特性make调用系统的编译器GCC/Clang完成编译链接最终在当前目录生成可执行文件QOwnNotes。qmake 构建的一些可选项从 src/QOwnNotes.pro 中可以进一步了解到 qmake 支持的条件编译开关CONFIG DEV_MODE启用开发者模式会开启预编译头文件PRECOMPILED_HEADER pch.h并在 Linux非 macOS上启用-Werror -pedantic等严格编译选项适合开发调试USE_SYSTEM_BOTAN选择使用系统安装的 Botan 加密库CONFIG USE_SYSTEM_BOTAN1还是内置的 Botan 库。Nix 的 qmake 构建build-systems/nix/default-qmake.nix默认开启USE_SYSTEM_BOTAN1而 Qt5 构建build-systems/nix/default-qt5.nix因为兼容性原因设置为USE_SYSTEM_BOTAN0内置 Botan2CONFIG USE_QLITEHTML仅在 Qt6 下启用src/QOwnNotes.pro 中通过greaterThan(QT_MAJOR_VERSION, 5)判断用于开启基于 qlitehtml 的 HTML 渲染支持。直接源码构建的完整命令参考除了官方文档中的原始命令外仓库根目录的 justfile 还提供了与文档命令完全对等的自动化封装方便对比与校验# justfile 中的 src-build 配方等价于 mkdir -p build-QOwnNotes cd build-QOwnNotes qmake CONFIGdebug USE_SYSTEM_BOTAN1 ../src/QOwnNotes.pro CONFIGDEV_MODE make -j$(nproc)这种“外部构建目录”方式不会污染src/源码目录是更推荐的实践。构建完成后可通过./build-QOwnNotes/QOwnNotes直接运行macOS 下可执行文件位于./build-QOwnNotes/QOwnNotes.app/Contents/MacOS/QOwnNotes见 justfile 的src-run配方。路线三使用 Nix 与 Devenv 构建官方文档还提供了基于 Nix 生态的构建方案要求本机已安装 Nix 包管理器 与 Devenv# 打开包含所有所需工具的 shell devenv shell # 构建应用程序 just nix-build # 运行构建好的应用程序 just nix-runNix 构建背后的原理devenv shell读取仓库根目录 devenv.nix进入一个包含完整工具链的开发环境。该文件声明了just、cmake、botan3、libsecret、pkg-config、libclang等工具以及来自 unstable Qt6 包的qmake、qttools、qtbase、qtdeclarative、qtsvg、qtwebsockets——其中qtwebsockets正是官方文档强调的必备模块。进入 shell 时还会通过update-qmake-symlinks脚本在环境中建立qmake6/qmake5符号链接供 QtCreator 与 CLion 使用just nix-build执行 justfile 中的nix-build配方实际运行nix build .?submodules1#qownnotes-qt6。submodules1参数确保 Nix 在构建时也会拉取并编译 git 子模块这与文档第一步的git submodule update --init是同一逻辑just nix-run运行./result/bin/QOwnNotes --session test即通过nix build产生的result符号链接启动应用。不同 Qt 版本的 Nix 构建目标flake.nix 中为不同场景预定义了多个构建目标你可以按需选用构建目标说明qownnotes-qt6默认 Qt6 构建对应just nix-buildqownnotes-qt6-qlitehtmlQt6 qlitehtml 渲染支持just nix-build-qt6-qlitehtmlqownnotes-qt5Qt5 构建just nix-build-qt5qownnotes-qt5153固定 Qt 5.15.3 版本构建qownnotes-qt69固定 Qt 6.9 版本构建defaultqt6Packages.callPackage的默认包此外还有两个实用变体nix-build-system使用运行系统自身的 nixpkgs--override-input nixpkgs nixpkgs使 Qt 版本与桌面环境的 Qt 插件如 KDE Plasma 平台主题匹配vm-test/vm-test-interactive则通过 NixOS VM 测试框架tests/vm/qownnotes.nix进行交互式自动化验证。Nix 构建产物中Linux 下会同时安装QOwnNotes与qownnotes两个命令后者为符号链接并利用xvfb-run为 bash 与 fish 生成 shell 补全见 default.nix 的postInstall段。源码归档Source archive除了从 git 仓库克隆构建官方还通过 GitHub Releases 发布独立的源码归档可直接下载解压后按前面任意一种方式构建。归档命名遵循固定模式例如https://github.com/pbek/QOwnNotes/releases/download/v23.7.0/qownnotes-23.7.0.tar.xz即路径为releases/download/v版本号/qownnotes-版本号.tar.xz将示例中的23.7.0替换为实际版本号即可获取对应归档。构建系统选型建议综合官方文档与仓库源码三条路线各有适用场景QtCreator图形化最适合日常开发调试——可以断点调试、查看 Qt 信号槽调用链官方文档也特别强调“For debugging, its easiest to use QtCreator”qmake make终端最轻量直接适合脚本化构建或在无图形界面的环境中编译也是 CI 常用的方式Nix Devenv提供完全可复现、依赖自足的构建环境无需手动安装 Qt 工具链且能按需选择 Qt5/Qt6 及不同补丁版本对 NixOS 用户或需要严格版本控制的场景最为友好。无论选择哪条路线构建完成后你都可以通过 webpage/src/installation 下的各平台安装文档了解运行与配置细节。若在构建中遇到问题可以在项目的 issues 页面反馈并附上你的构建环境信息以便排查。赞分享桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载相关推荐QOwnNotes 从源码构建全指南git clone qmake 终端构建、Qt Creator 与 Nix/Devenv 三路实战QOwnNotes 从源码构建全指南git clone qmake 终端构建、Qt Creator 与 Nix/Devenv 三路实战 QOwnNotes桌面应用QOwnNotes 从源码编译构建全指南Qt/qmake 与 Nix 双路线实战QOwnNotes 从源码编译构建全指南Qt/qmake 与 Nix 双路线实战 本指南以 QOwnNotes 官方安装文档 webpage/src/es/桌面应用从源码构建 QOwnNotesQt/qmake、CMake 与 Nix 三种构建路线全解析从源码构建 QOwnNotesQt/qmake、CMake 与 Nix 三种构建路线全解析 本文围绕 QOwnNotes 官方构建指南展开完整讲解从 Git桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

P1734最大约数和:用一道题彻底搞懂01背包动态规划

P1734最大约数和:用一道题彻底搞懂01背包动态规划

在OJ上做P1734“最大约数和”这道题时,很多人的第一反应是:约数和跟背包有什么关系?难道要先把1到S的约数和全算出来,再暴力凑组合?可等你把题意真正翻译完,就会发现这是一道特别典型的动态规划01背包题&am…

2026/10/14 17:43:06 阅读更多 →
LightMem系列FluxMem:把记忆建模为持续演化的异构图,让Agent拥有自愈技能

LightMem系列FluxMem:把记忆建模为持续演化的异构图,让Agent拥有自愈技能

【免费下载链接】LightMem [ICLR 2026] LightMem: Lightweight and Efficient Memory-Augmented Generation 项目地址: https://gitcode.com/gh_mirrors/li/LightMem 点击查看 免费下载 LightMem 是 ICLR 2026 的轻量高效记忆增强生成(Memory-Augmented…

2026/10/14 17:43:06 阅读更多 →
Linux内存管理全链路解析:从malloc到页表映射与缺页处理

Linux内存管理全链路解析:从malloc到页表映射与缺页处理

1. 项目概述:为什么“内存管理”是操作系统课里最让人坐不住又最不能跳过的章节刚接触操作系统课程时,很多人盯着“内存管理”这四个字发愣——它不像进程调度那样有直观的“谁先跑、谁后跑”,也不像文件系统那样能马上联想到“我的文档在哪”…

2026/10/14 17:43:06 阅读更多 →

最新新闻

高职财税大数据应用专业:数据分析能力培养路径与实战场景

高职财税大数据应用专业:数据分析能力培养路径与实战场景

这两年,我和不少带“高职财税大数据应用”专业的老师交流,大家最常聊的话题不是买什么新实训平台,也不是考证通过率,而是同一句话:“数据分析到底怎么真正融进财税课?”前几年,这个问题还能靠一…

2026/10/14 19:58:07 阅读更多 →
Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

做Android开发这几年,我最大的感受就是:很多疑难杂症之所以难查,不是代码写得多烂,而是你对“四大组件”和系统服务之间那套协作机制没吃透。四大组件就像一个个打工仔,干活的逻辑全写在应用进程里,可它们能…

2026/10/14 19:58:07 阅读更多 →
React待办清单实战:从跑通到拆解状态管理与本地持久化

React待办清单实战:从跑通到拆解状态管理与本地持久化

简介:这是一份面向 React 初学者与前端进阶者的待办事项清单实战项目源码,基于 React.js 构建,配合 Node.js、Webpack 与 SCSS 完成工程化与样式组织,适合用来练习组件拆分、状态管理与列表增删交互。压缩包共 15 个文件&#xff…

2026/10/14 19:58:07 阅读更多 →
MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

1. 项目概述:为什么“MyBatis逆向工程”不是偷懒捷径,而是团队提效的底层基建你有没有经历过这样的场景:一个新数据库表上线,字段12个,关联3张字典表,业务接口要查、要改、要分页、要导出——光是手写Mappe…

2026/10/14 19:58:07 阅读更多 →
真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

简介:这是一份面向蓝桥杯参赛者的历年真题合集,涵盖省赛与国赛两个层级的代表性赛题,适用于正在备赛的本科、高职院校学生及指导老师。资源以rar压缩包形式整体打包,大小约62.1MB,便于一次性获取多届试题并离线使用&am…

2026/10/14 19:58:07 阅读更多 →
TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

1. 这不是“换壳”,而是一次精准的协议层手术“80行 TypeScript Mods,把 Claude Code 改造成 Deepseek Harness”——这个标题乍看像极了某些技术圈里常见的“魔改教程”,但实际操作中,我很快意识到:它根本不是在 UI 上…

2026/10/14 19:57:05 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →