3

有一些我不明白的 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 中的文件。

任何帮助,欢迎链接。

4

2 回答 2

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-debug, build-rel, build-opt)。

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

cmake ../src

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

于 2012-08-09T20:40:11.357 回答
0

这帮助我从 cmake examples.html开始

于 2012-08-09T20:36:06.123 回答