用于C ++项目的CMake文件

时间:2012-08-09 20:23:37

标签: c++ cmake

我不明白有一些CMake魔法。对于包含以下目录的小型C ++项目,CMakeLists.txt文件应该如何:

.
├── bin
└── src
    ├── src
    └── test

bin      — directory for built program
src/src  — directory for source
src/test — directory for tests

测试需要包含src / src中的文件。 我想管理cmake的所有操作,但是此时我甚至不能让cmake在src / c.cpp中编译文件。

任何帮助,欢迎链接。

2 个答案:

答案 0 :(得分:7)

您的CMake文件应位于主源目录及其子目录中。最简单的方法是在CMakeLists.txt目录中有一个src,其中包含src/srcsrc/test中的所有文件。一个非常简约的例子可能如下所示:

# CMakeLists.txt in src
project(myExample)
set(myExample_SOURCES
        src/file1.cpp
        src/main.cpp)
add_executable(myExecutable ${myExample_SOURCES})

set(myExample_test_SOURCES
        src/file1.cpp
        test/test_file2.cpp
        test/test_main.cpp)
add_executable(myTestSuite ${myExample_test_SOURCES})

通常不指定输出目录,因为您可以使用不同的活动目录 与...并行构建 不同的选择,例如您可以在调试模式-O0 -g中创建一个版本,另一个在发布模式下使用-O2 -g标志,第三个在发布模式下使用重型优化标志-O3。每个版本都位于自己的目录中(例如build-debugbuild-relbuild-opt)。

您应该手动创建输出目录(在您的情况下为bin)并在此目录中调用cmake命令。作为参数,您必须提供主CMakeLists.txt的路径。换句话说,只需执行

cmake ../src

当你在bin时。这将获取src目录中的所有文件,并将输出放到bin目录中。 您可以轻松创建第二个输出目录,例如bin2,您可以在其中指定不同的构建标志。 ccmake为此提供了非常简约的GUI。

答案 1 :(得分:0)

这帮助我开始使用cmake examples.html