从另一个 CMakeLists.txt 将变量读入 cmake
Reading variables into cmake from another CMakeLists.txt
使用 Ubuntu
、C++
和 cmake
,我想创建一个程序 Alpha
,它基于另一个程序 Beta
的代码。我已经有了 Beta
的源代码,我需要为 Alpha
编写代码以使用现有代码。我试图保持一切整洁,所以我有一个单独的目录用于 Alpha
和 Beta
源文件,Alpha.cpp
和 Beta.cpp
.
这是我的目录结构:
/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cpp
我 Alpha
的 CMakeLists.txt
文件如下所示:
cmake_minimum_required(VERSION 2.8)
project(Alpha)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)
现在,在Beta
的原始代码中,CMakeLists.txt
文件有很多信息,例如检查操作系统、查找软件包以及一般定义各种cmake变量。我需要在 Alpha
的 CMakeLists.txt
文件中使用这些变量,以便正确编译 Beta.cpp
。
那么,我的问题是:是否可以将所有这些信息保留在 Beta/CmakeLists.txt
中,而不必将其全部写入 [=6=] 的 CMakeLists.txt
文件中?然后我如何告诉 Alpha
的 CMakeLists.txt
文件读取 Beta
的 CMakeLists.txt
文件以获取这些变量?我想这样做是为了保持一切整洁,并保持模块化。谢谢!
CMake 有一个 include
结构,可以让您引入其他 files/modules。
http://www.cmake.org/cmake/help/v3.0/command/include.html
所以你可以把你需要的任何东西从 Beta/CMakeLists.txt 中分离出来,放到另一个叫做 Beta.cmake 的 file/module 中,然后用 include (Beta/Beta.cmake)
.[=16 将它包含在 Alpha 的 CMakeLists 中=]
所以你的目录结构是
/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cmake (variables required in Alpha's CMake)
/Beta.cpp
而 Alpha 的 CMakeList.txt
cmake_minimum_required(VERSION 2.8)
project(Alpha)
include(Beta/Beta.cmake) (get variables needed from Beta)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)
另见 How to include an additional CMakeLists.txt
使用 Ubuntu
、C++
和 cmake
,我想创建一个程序 Alpha
,它基于另一个程序 Beta
的代码。我已经有了 Beta
的源代码,我需要为 Alpha
编写代码以使用现有代码。我试图保持一切整洁,所以我有一个单独的目录用于 Alpha
和 Beta
源文件,Alpha.cpp
和 Beta.cpp
.
这是我的目录结构:
/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cpp
我 Alpha
的 CMakeLists.txt
文件如下所示:
cmake_minimum_required(VERSION 2.8)
project(Alpha)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)
现在,在Beta
的原始代码中,CMakeLists.txt
文件有很多信息,例如检查操作系统、查找软件包以及一般定义各种cmake变量。我需要在 Alpha
的 CMakeLists.txt
文件中使用这些变量,以便正确编译 Beta.cpp
。
那么,我的问题是:是否可以将所有这些信息保留在 Beta/CmakeLists.txt
中,而不必将其全部写入 [=6=] 的 CMakeLists.txt
文件中?然后我如何告诉 Alpha
的 CMakeLists.txt
文件读取 Beta
的 CMakeLists.txt
文件以获取这些变量?我想这样做是为了保持一切整洁,并保持模块化。谢谢!
CMake 有一个 include
结构,可以让您引入其他 files/modules。
http://www.cmake.org/cmake/help/v3.0/command/include.html
所以你可以把你需要的任何东西从 Beta/CMakeLists.txt 中分离出来,放到另一个叫做 Beta.cmake 的 file/module 中,然后用 include (Beta/Beta.cmake)
.[=16 将它包含在 Alpha 的 CMakeLists 中=]
所以你的目录结构是
/CMakeLists.txt
/Alpha.cpp (the main function)
/Beta
/CMakeLists.txt
/Beta.cmake (variables required in Alpha's CMake)
/Beta.cpp
而 Alpha 的 CMakeList.txt
cmake_minimum_required(VERSION 2.8)
project(Alpha)
include(Beta/Beta.cmake) (get variables needed from Beta)
add_executable(Alpha Alpha.cpp Beta/Beta.cpp)
另见 How to include an additional CMakeLists.txt