cmake比我希望的更容易。在我问自己的那一刻,我如何创建一个(或多个)CMakeLists.txt
文件,以便以下项目结构有效:
my workspace
src
project1
project2
build
project1
project2
更具体地说,我有以下两个约束来确定我的项目结构和我的CMakeLists.txt
文件:
1)我使用git并且只想提交CMakeLists.txt
和我的源文件,构建应该只为每个想要通过他的欲望的IDE工作的特定用户生成
2)如果有人克隆了我的存储库,他将能够运行cmake,为他/她想要的IDE构建如上所述的目录(/my workspace/build/project1
和/my workspace/build/project2
),这样他就可以了可以在这个项目上工作
3)src
目录应该是干净的,这样任何参与项目的人都可以使用他/她想要的IDE,更改src文件和CMakeLists.txt
,然后提交他/她已经完成了,所以其他人都可以再次结账并以同样的方式使用它
以这种方式进行协作的巨大优势!但是,cmake
似乎只是将所有内容构建到调用cmake
的目录中。
现在,对于问题:
a)为了使用相应的版本创建我想要的目录,除了从新构建的cmake
和/my workspace/build/project1
文件夹中调用/my workspace/build/project2
之外,还有其他方法吗?
b)您更喜欢不同的目录结构进行协作吗?
c)如果b)是,您在哪里放置CMakeLists.txt
文件,从哪里拨打cmake
以及建设的一般流程是什么?
d)QT创建moc文件似乎工作正常。你是以任何方式提交它们,还是只是将它们放入构建目录中,以便每个人都检查出来并确保它们可以被使用?
答案 0 :(得分:0)
构建目录不是你要决定的事情。其他开发人员将选择放置构建目录的位置(我有一个使用eclipse的“外部”设置:https://stackoverflow.com/a/38140914/4742108)。构建目录不会提交到存储库中。
CMakeLists.txt
是每个项目。你有两个项目,所以从CMake的角度来看它们不应该以任何方式相关。此外,您应该决定是否有必要将它们提交到同一个存储库。
moc文件不会在任何地方提交。它们对于每个构建都是本地的,就像*.o
文件或编译器生成的任何中间内容一样。