带有 C++ 插件 (cmake) 子目录的 QML 应用程序

带有 C++ 插件 (cmake) 子目录的 QML 应用程序

我正在开发一个 Ubuntu Phone 应用程序“带有 C++ 插件 (cmake) 的 QML 应用程序”,但我有太多的 qml 文件,所以我想按功能将它们分开

应用名称

  • CMakeLists.txt
  • ..
  • 应用程序
    • Cmake列表.txt
    • 应用程序名称.desktop.in
    • 测试
    • 主要成分
      • 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,但它们已经在项目模板中用于模拟某种“自动”行为。

相关内容