如何在不同的CMake文件之间共享变量,并显示以下示例来说明我的问题:
cmake_minimum_required(VERSION 2.6)
project(test)
set(Var3 "Global variable")
add_subdirectory(${test_SOURCE_DIR}/exe)
add_subdirectory(${test_SOURCE_DIR}/dll)
Run Code Online (Sandbox Code Playgroud)
set(Var1 "this is variable 1")
set(Var1 ${Var1} " added to varible 1")
message(STATUS ${Var1})
Run Code Online (Sandbox Code Playgroud)
set(Var2 "this is variable 2")
message(STATUS ${Var2})
message(STATUS ${Var1})
message(STATUS ${Var3})
Run Code Online (Sandbox Code Playgroud)
在这个例子中,VAR3可以的CMake的文件中可以看出exe,并dll因为它是在定义Main.但是,exe将不会在其中定义Var1 dll.我只是很好奇:有没有办法让var1在exeobservable中定义dll?
Ant*_*nio 14
除了Tadeusz正确的说法之外,你可以通过使用在任何级别(不只是一个!)使变量可见
set(Var1 "This is variable 1" CACHE INTERNAL "")
Run Code Online (Sandbox Code Playgroud)
该变量将可用于该指令后面的所有CMake指令,因此例如它将不可用于在定义此变量的目录之前添加的姐妹目录.
Tad*_*ski 10
可变可见性的范围形成树.添加的CMakeFiles.txt文件add_subdirectory可以访问自己定义的变量,也可以访问父作用域(示例中的顶级全局作用域).
您可以使用以下方法将变量向上导出一级:
set(Var1 "This is variable 1" PARENT_SCOPE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8198 次 |
| 最近记录: |