c++ - 使用 cmake 和 QT 组织多个项目

标签 c++ git qt cmake projects-and-solutions

cmake 比我所希望的还要简单。目前我问自己的是,如何创建一个(或多个)CMakeLists.txt 文件,使以下项目结构有效:

my workspace
    src
        project1
        project2
    build
        project1
        project2

更具体地说,我有以下两个约束,它们应该决定我的项目结构和我的 CMakeLists.txt 文件:

1) 我使用 git 并且只想提交 CMakeLists.txt 和我的源文件,build should only by generated for each particular user who would like to work on this project by an IDE他的愿望

2) 如果有人克隆了我的存储库,他将能够运行 cmake 来构建上述目录(/my workspace/build/project1/my workspace/build/project2) 他/她想要的IDE,这样他就可以在这个项目上工作

3) src 目录应该是干净的,这样任何在该项目上工作的人都可以使用他/她想要的 IDE 来执行此操作,更改 src 文件和可能的 CMakeLists.txt 然后提交他/她所做的事情,以便其他人可以再次 checkout 并以相同的方式使用它

以这种方式进行协作的巨大优势!但是,cmake 似乎将所有内容构建到调用 cmake 的目录中。

现在,对于问题:

a) 为了用相应的构建创建我想要的目录,除了从新构建的 /my workspace/build/project1 调用 cmake 之外,还有其他方法吗和 /my workspace/build/project2 文件夹?

b) 您更喜欢使用不同的目录结构进行协作吗?

c) 如果 b) 是,你把你的 CMakeLists.txt 文件放在哪里,你从哪里调用 cmake 以及一般情况是什么构建过程?

d) QT 创建的 moc 文件似乎工作正常。您是否以任何方式提交它们,或者只是将它们放入构建目录中供每个 checkout 的人使用,并确保它们可以使用?

最佳答案

构建目录不是您可以决定的。其他开发人员将选择放置构建目录的位置(我有一个带有 eclipse 的“外部”设置:https://stackoverflow.com/a/38140914/4742108)。构建目录未提交到存储库中。

CMakeLists.txt 是针对每个项目的。您有两个项目,因此从 CMake 的角度来看,它们不应该有任何关联。此外,您应该决定是否有必要将它们提交到同一个存储库。

moc 文件没有在任何地方提交。它们对于每个构建都是本地的,就像 *.o 文件或编译器生成的任何中间内容一样。

关于c++ - 使用 cmake 和 QT 组织多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291984/

相关文章:

c++ - 为什么每帧 4 像素上的 80 fps 对我来说滞后?

c++ - 好友功能和模板

c++ - 非静态引用成员 ‘int& Property<int>::value’ ,不能使用默认赋值运算符

linux - 无法使用 wget 下载 git hub 搜索结果

C++ "undefine"include 中的模块关键字

git - 在子模块中使用子模块

Git 从 TeamCity 9.0.3 构建推送

c++ - Qt 未记录的方法 setSharable

c++ - Qt #define "signals"与 GStreamer (gst) 冲突

c++ - 将 QWebView 打印为 PDF