Cmake - 如何构建在不同子文件夹中分开的项目

标签 cmake subdirectory

我正在尝试使用 CMake 构建一个大项目,但我在如何编写 CMakeList.txt 文件方面遇到了困难。 我的项目分为不同的文件夹,每个文件夹包含一组或多或少相关的 .hpp 和 .cpp 文件,如下所示:

root 

   - memory
   -- Memory.cpp
   -- Memory.hpp
   -- MemoryManager.hpp
   -- MemoryManager.cpp
   -- CMakeLists.txt

   - tools
   -- Array.cpp
   -- Array.hpp
   -- CMakeLists.txt

   - main.cpp
   - CMakeLists.txt

我想将所有文件一起构建为可执行文件。我不想在每个子文件夹中构建库,因为我看不出有任何理由这样做。 我还想避免将所有源文件的单个大列表放在位于项目根目录的 CMakeLists.txt 文件的 ADD_EXECUTABLE 命令中。

您知道如何正确设置它吗?

干杯,

M.

最佳答案

可以使用GLOB函数,如:

file (GLOB _my_sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
  memory/*.cpp tools/*.cpp main.cpp)
add_executable (myprogbin ${_my_sources})
set_target_properties (myprogbin PROPERTIES OUTPUT_NAME myprog)

参见 http://cmake.org/cmake/help/cmake-2-8-docs.html#command:file供引用

关于Cmake - 如何构建在不同子文件夹中分开的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553875/

相关文章:

CMake:动态添加对 add_custom_command 的依赖

c++ - 通过 CMake 定义预处理器宏?

cmake - 如何使用 CMake 为库添加链接器标志?

c++ - 具有多个子目录的 CMake 未编译

使用 Google Analytics 进行 Javascript 重定向

macos - 如何在 Mac OS X Lion 上通过 Cmake 编译 OpenCV 2.4.0 (beta2)?

cmake - 如何使用 CMake 为某个目标创建 C#define?

go - 如何从某个应用程序目录导入所有子目录?

java - 写入 Zip 中的子目录?使用 java.util.zip。 ZipEntry.putNextEntry()

java - Files.createDirectories() 抛出 FileAlreadyExistsExceptions 但没有目录