我不明白有一些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中编译文件。
任何帮助,欢迎链接。
答案 0 :(得分:7)
您的CMake文件应位于主源目录及其子目录中。最简单的方法是在CMakeLists.txt
目录中有一个src
,其中包含src/src
和src/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-debug
,build-rel
,
build-opt
)。
您应该手动创建输出目录(在您的情况下为bin
)并在此目录中调用cmake
命令。作为参数,您必须提供主CMakeLists.txt
的路径。换句话说,只需执行
cmake ../src
当你在bin
时。这将获取src
目录中的所有文件,并将输出放到bin
目录中。
您可以轻松创建第二个输出目录,例如bin2
,您可以在其中指定不同的构建标志。 ccmake
为此提供了非常简约的GUI。
答案 1 :(得分:0)
这帮助我开始使用cmake examples.html