c++ - 如何运行所有子目录 CMakeList 文件并捕获输出?

标签 c++ ubuntu cmake

我是 cmake 文件创建的新手。我在目录列表中有 C++ 代码,每个目录都有自己的 CMakeLists.txt 文件。为了在每个目录中编译和创建可执行文件,我必须进入目录并在终端上执行以下两个命令。

$ cmake .
$ make

示例目录结构: enter image description here

每个目录 1、2 ...41 都有自己的“CMakeLists.txt”。

每个目录文件结构中的示例: enter image description here

为了在每个目录中编译和创建可执行文件,我必须遵循那些拖曳命令。

但现在我必须编写 python 脚本/cmake 脚本来在每个目录中执行上述操作,并捕获输出并存储在日志文件中。

请任何人指导我解决我的问题。提前致谢。

我的每个目录 CMakeLists.txt 是这样的:

project(foundations)
cmake_minimum_required(VERSION 2.6)

include_directories($ENV{GMOCK_HOME}/include $ENV{GMOCK_HOME}/gtest/include)
link_directories($ENV{GMOCK_HOME}/mybuild $ENV{GMOCK_HOME}/gtest/mybuild)
add_definitions(-std=c++11)

set(sources main.cpp RetweetCollectionTest.cpp)
add_executable(test ${sources})
target_link_libraries(test pthread)
target_link_libraries(test gmock)
target_link_libraries(test gtest)

最佳答案

添加子目录 https://cmake.org/cmake/help/v3.0/command/add_subdirectory.html正是您所需要的。

编辑:

例如:

add_subdirectory(1 1)

其中第一个参数是source dir,第二个是binary dir。因此,名称不应重叠。

另外,检查这个:https://stackoverflow.com/a/7788165/934691

但是,如果你不想重写你的 CMakeLists,一个简单的 bash 脚本就像

for dir in ls ;做 cd $dir;制作。 && 制作;裁谈会..;完成

会更适合你。

关于c++ - 如何运行所有子目录 CMakeList 文件并捕获输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36163073/

相关文章:

c++ - 多重继承中的内存布局

c++ - 首选位置相对或包含路径路径相对包含在您自己的 C++ 库中

php - 调用未定义的函数 recode_string() ubuntu

c++ - 无法使用 include(ctest) 构建测试单元?

gcc - 使用cmake和mingw-w64编译测试程序出错

c++ - 这个比较是否不一致(还是存在另一个问题)?

c++ - 在 C++ 中使用 rand() 函数的替代方法

android - 无法识别路径中的 android 命令

mongodb - Ubuntu 无法使用 node 运行 mongod 数据库

c++ - CMake Qt 基于 Windows 链接器问题构建