1
我试图创建一个全局列表,我希望它附加在宏中。 这里是我的设置:在宏观范围内的Cmake全局变量
project
\__. CMakeLists.txt
\__. level1
\__. CMakeLists.txt
\__. level2a
\__. CMakeLists.txt
\__. level2b
\__. CMakeLists.txt
这里是我的最高级别的CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
macro(listappend var)
list(APPEND MY_GLOBAL_LIST "${var}")
message(STATUS "LIST IN MACRO SCOPE: ${MY_GLOBAL_LIST}")
endmacro(listappend)
set(MY_GLOBAL_LIST "")
add_subdirectory(level1)
message(STATUS "LIST: ${MY_GLOBAL_LIST}")
# call something here with the global list
1级的CMakeLists.txt只需做两个add_subdirectory()。
级别2的CMakeLists.txt如下:
listappend("test2a")
最后,这里是我的输出:
[[email protected] 17:15:14] ~/tmp/cmake/build$ cmake ..
-- LIST IN MACRO SCOPE: test2a
-- LIST IN MACRO SCOPE: test2b
-- LIST:
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lz/tmp/cmake/build
我正在寻找一种方式来拥有范围内附加的全局列表而不必将全局列表变量作为宏的参数。 我不确定是否有可能。
我也试过CACHE INTERNAL标志,但它没有帮助。我真的不怎么处理这个问题。
感谢所有帮助:)
有关的CMake的变量范围的一些细节参见[什么是CMake的语法来设置和使用变量?](http://stackoverflow.com/questions/31037882/whats-the-cmake-syntax-to-set-and-use-variables)。 – Florian