使用cmake和QT组织多个项目

时间:2016-07-10 12:41:23

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

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文件似乎工作正常。你是以任何方式提交它们,还是只是将它们放入构建目录中,以便每个人都检查出来并确保它们可以被使用?

1 个答案:

答案 0 :(得分:0)

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

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

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