我从根目录有两个子目录,其中一个有以下行:
set(${LIBNAME}_publicheaders
LocalizeResource.h
)
我希望能够从另一个子目录访问这个变量。我怎样才能做到这一点?
我从根目录有两个子目录,其中一个有以下行:
set(${LIBNAME}_publicheaders
LocalizeResource.h
)
我希望能够从另一个子目录访问这个变量。我怎样才能做到这一点?
@JoakimGebart 的回答可能是解决此问题的更常见方法。但是,您也可以get_directory_property
直接从第二个子目录中使用来实现您所追求的。
我在您的评论中看到,您使用${LIB_NAME}_publicheaders
了 ,但在您的问题中,您使用了${LIBNAME}_publicheaders
。这可能是您的问题的原因,因为该命令应该像这样工作:
get_directory_property(MyVar
DIRECTORY ${CMAKE_SOURCE_DIR}/abc
DEFINITION ${LIBNAME}_publicheaders)
但是,有几个附带条件:
add_subdirectory(abc)
之前被调用。add_subdirectory
LIBNAME
也在set
同一个子目录 (abc) 内,则需要先检索该子目录的值。因此,虽然这可能是一个不太常见的解决方案,但它的优点是它不会用子目录特定的变量“污染”全局命名空间——这适用于引用另一个子目录的子目录。
PARENT_SCOPE
您可以使用set() 选项在父作用域中设置变量
例子:
set(${LIBNAME}_publicheaders
LocalizeResource.h
PARENT_SCOPE
)
见http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:set
然而,这意味着该变量不仅在其他子目录中可用,而且在同一级别的任何其他子目录中也可用。