![带有 C++ 插件 (cmake) 子目录的 QML 应用程序](https://linux22.com/image/870004/%E5%B8%A6%E6%9C%89%20C%2B%2B%20%E6%8F%92%E4%BB%B6%20(cmake)%20%E5%AD%90%E7%9B%AE%E5%BD%95%E7%9A%84%20QML%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我正在开发一个 Ubuntu Phone 应用程序“带有 C++ 插件 (cmake) 的 QML 应用程序”,但我有太多的 qml 文件,所以我想按功能将它们分开
应用名称
- CMakeLists.txt
- ..
- 应用程序
- Cmake列表.txt
- 应用程序名称.desktop.in
- 测试
- 主要成分
- mainComponents 的子目录
- 一些文件
- 一些其他文件
- mainComponents 的子目录
- 应用程序名称.qml
- 雜
- CMakeLists.txt
- 应用程序名称.apparmor
- 清单.json.in
但是“mainComponents”文件夹没有出现在项目树中,经过一番搜索后我发现必须在每个新文件夹中添加 CMakeLists.txt,并且:
添加子目录(文件夹名称)
父文件夹 CMakeLists.txt 文件中的说明,但我不知道是否还有更多内容需要添加,也不知道如何创建 CMakeLists.txt
谢谢
答案1
您只需要学习 CMake 语言。它是整个项目中 CMakeLists.txt 文件的语言。
该语言指定如何构建项目。并且该语言独立于我们正在使用的 QtCreator IDE。因此,您可以在没有 QtCreator 的情况下进行构建,并在您希望的位置手动创建 CMakeLists.txt。
回到问题:
您可以使用“add_subdirectory”并为每个子目录编写 CMakeLists.txt,并将文件名附加到每个 CMakeLists.txt 中的 QML_JS_FILES 变量。
但你也可以像开发核心应用程序的人那样做:例如在 ubuntu-terminal-app 中(源代码在https://launchpad.net),它们在 app/CMakeLists.txt 中使用了递归包含:
file(GLOB_RECURSE QML_JS_FILES *.qml *.js)
而不是非递归:
file(GLOB QML_JS_FILES *.qml *.js)
更新: 是的,一般来说,不推荐使用 GLOB,但它们已经在项目模板中用于模拟某种“自动”行为。