2011-06-15 16 views
0

我知道每个子目录都必须有一个CMakeLists.txt,但我不想为每个目录创建一个库或一个可执行文件。如何将子目录合并到单个可执行文件中?

我的文件夹结构:

/src 
    /exportedHeaders 
    /server 
    main.cpp 

每个子文件夹拥有的.h和.cpp文件的混合。我不明白我怎样才能把它全部混合到一个单独的可执行文件中,似乎并没有一个指令。

+0

通常,您将.cpp文件(包括.h文件)编译为单个可执行文件。这是你在问什么?或者你知道如何编译,但要求别的吗? – jwd 2011-06-15 18:32:32

+0

@jwd:对,但是如何将子文件夹内的cpp文件添加到从topfolder生成的可执行文件中?我想我错过了更大的东西:( – Blub 2011-06-15 19:21:40

回答

2

我还没有真正使用过CMake,因此可能有更好的方法,但据我所知可以指定所有源文件的路径。

如:

add_executable (myProgram main.cpp subdir1/foo.cpp subdir2/bla.cpp) 

我想你可以使用通配符文件得到*.cpp在每个子目录,以减少打字。 请参阅this mailing list message了解有关CMake中文件通配的信息。

+0

与CMake,明确列出你的文件比使用任何文件通配技术更好,如果你明确列出它们,那么你必须改变你的CMakeLists.txt文件,当你添加和删除文件......并且构建系统可以注意到CMakeLists.txt文件已过时,并且在您做出这样的更改时自动重新运行CMake。使用文件匹配技术,不会发生这样的文件更改,并且您可以执行没有得到CMake在必要时自动运行的好处 – DLRdave 2011-06-16 10:59:07

+0

是的,这是处理这种情况的典型方式。FWIW,我通常将我的项目设置为包含'include /','src /'和'test /'文件夹,并且我通常只在顶部目录中有一个'CMakeLists.txt'文件,用于我的所有目标,这些目标可能分散在不同的源文件夹中。 – 2012-08-05 00:48:58

相关问题