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/