cmake - CMake:如何从子目录访问变量,而无需在父作用域中显式设置变量

标签 cmake box2d

我已经使用CMakeadd_subdirectory中添加了一个子目录。如何在不通过将setPARENT_SCOPE结合使用来显式设置变量的情况下,从该子目录的范围访问变量?

set(BOX2D_BUILD_STATIC       1)
set(BOX2D_BUILD_EXAMPLES     0)
set(BOX2D_INSTALL_BY_DEFAULT 0)

add_subdirectory(Box2D_v2.2.1)

message(STATUS "Using Box2D version ${BOX2D_VERSION}")

# how to get ${BOX2D_VERSION} variable without modifying CMakeLists.txt in Box2D_v2.2.1?

这可能吗?

最佳答案

如果变量是普通变量(而不是高速缓存变量),则无法从父作用域访问它。

可以访问高速缓存变量(使用set(... CACHE ...)设置的变量),而不必考虑范围,全局属性(set_property(GLOBAL ...))也可以访问。

关于cmake - CMake:如何从子目录访问变量,而无需在父作用域中显式设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517221/

相关文章:

Java LibGDX 无法在启用物理体和重力的情况下移动

CMake add_custom_command/_target 在不同目录下进行交叉编译

java - 非 C 项目的跨平台自动构建

c++ - NetBeans 6.9、CMake 和 C++ : How to specify the build path?

CMake 版本设置 : Am I suppose to set the `C++` version in my project-root `CMakeLists.txt` file using CMAKE_CXX_STANDARD, 或 `CXX_STANDARD` ?

iphone - 在ios中使用box2d绘制调试形状,如何?

c++ - 使用 Google Test 和 CMake 在子文件夹中配置测试

physics - Box2d 中的摩擦

iphone - 为什么重力比例在 box2d 中不起作用

c++ - Box2D b2Contact 传感器无法检测到物体碰撞