2011-10-02 160 views
2

我们想用C开发一些动态链接的库,每个都用于Linux和Windows。我们想用cmake把CMakeLists.txt放在哪里?

请,如何组织目录,并在那里把那些CMakeLists.txt(或者我们应该只有一个?)

回答

1

另见我回答另一个非常类似的堆栈溢出问题:

multiple directories under cmake

+0

优秀的职位。谢谢。 – Cartesius00

+0

问题,你列举了源文件 - 这与GLOBing的关系如何?更好,更糟? – Cartesius00

+0

如果它非常出色,你可以把它变成最好的...... :-)通常,明确列举文件会更好:这样,当你改变CMakeLists文件来添加/删除/修改源文件时,CMake可以检测到改变并适当地重新运行。有了globbing,没有监控整个文件系统就没有办法发生这种情况。 – DLRdave

4

没有单一的方式,它必须做的,但在这里,一种可能的方式:

CMakeLists.txt 
src/ 
    CMakeLists.txt 
    lib1/ 
     CMakeLists.txt 
     lib1.c 
    lib2/ 
     CMakeLists.txt 
     lib2.c 
    app/ 
     CMakeLists.txt 
     app.c 
include/ 
    lib1.h 
    lib2.h 

尽管您可以在顶级CMakeLists.txt文件中执行所有操作,但是如果您的项目非常复杂,它将非常快速地变得很大并且非常麻烦。

+0

请和在哪里得到那些'build'目录? - 我假设每个图书馆都应该有一个。我对吗? – Cartesius00

+1

我把构建目录放在与src /和include /目录相同的级别。在build目录中,运行命令“cmake ..”,然后运行“make”(假设为* nix)。这被称为源外构建,因此您的构建工件都不会与源文件混淆。构建目录结构将匹配项目的目录结构,例如,lib1的所有构建文件都将位于build/src/lib1中。 – able