从CMake中的不同文件夹级别收集信息

从CMake中的不同文件夹级别收集信息,cmake,Cmake,我有一个具有不同的可配置依赖项的项目: IF(HAVE_LIBA) ADD_SUBDIRECTORY(something) ENDIF() IF(HAVE_LIBB) ADD_SUBDIRECTORY(somethingElse) ENDIF() 我希望有一个库的中心列表,包括最终使用特定配置构建的库的路径和安装路径 CMakeLists.txt: SET(MYPROJECT_LIBS "") ADD_LIBRARY(somethingLib ...) # Howto append

我有一个具有不同的可配置依赖项的项目:

IF(HAVE_LIBA)
  ADD_SUBDIRECTORY(something)
ENDIF()

IF(HAVE_LIBB)
  ADD_SUBDIRECTORY(somethingElse)
ENDIF()
我希望有一个库的中心列表,包括最终使用特定配置构建的库的路径和安装路径

CMakeLists.txt:

SET(MYPROJECT_LIBS "")
ADD_LIBRARY(somethingLib ...)
# Howto append somethingLib to MYPROJECT_LIBS
something/CMakeLists.txt:

SET(MYPROJECT_LIBS "")
ADD_LIBRARY(somethingLib ...)
# Howto append somethingLib to MYPROJECT_LIBS
SET(…PARENT_SCOPE)[CMake>=2.6]是一种方法,但是,我有几个级别的文件夹,PARENT SCOPE只修改上面一个级别的变量

缓存MYPROJECT_LIBS也没有效果


关于如何填充这些列表的任何其他(可能是常规)建议?

请改为填充全局属性

set_property(GLOBAL APPEND PROPERTY THE_LIBS_PROP liba) 
阅读:


改为填充全局属性

set_property(GLOBAL APPEND PROPERTY THE_LIBS_PROP liba) 
阅读:


改为填充全局属性

set_property(GLOBAL APPEND PROPERTY THE_LIBS_PROP liba) 
阅读:


改为填充全局属性

set_property(GLOBAL APPEND PROPERTY THE_LIBS_PROP liba) 
阅读:


“缓存MYPROJECT_LIBS也没有效果”是什么意思?@Peter我在子目录中尝试了SET(var.“CACHE INTERNAL”),它没有修改顶层的var,但可能是一个作用域错误,因为我在本地作用域上也实例化了var。你说“缓存MYPROJECT_LIBS也没有效果”是什么意思?@Peter我尝试了SET(var.“.CACHE INTERNAL”“)在子目录中,它没有修改顶级的var,但这可能是一个范围错误,因为我在本地范围上也实例化了var。您所说的“缓存MYPROJECT_LIBS也没有效果”是什么意思?@Peter我尝试设置(var.“CACHE INTERNAL”“)在没有为顶层修改var的子目录中,但可能是范围错误,因为我在本地范围上也实例化了var。您所说的“缓存MYPROJECT_LIBS也没有效果”是什么意思?@Peter我尝试了SET(var.“CACHE INTERNAL”?)在没有为顶层修改var的子目录中,但可能是一个范围错误,因为我在本地范围上也实例化了var。效果很好,非常感谢。对不同的设计有什么建议吗?如果不知道您使用内容的目的,就不可能推荐任何不同的内容。效果很好m、 非常感谢。对不同的设计有任何建议吗?如果不知道您使用内容的目的,就不可能推荐任何不同的内容。非常有魅力,非常感谢。对不同的设计有任何建议吗?如果不知道您使用内容的目的,就不可能推荐任何不同的内容。工作方式如下很有魅力,非常感谢。对不同的设计有什么建议吗?如果不知道您使用内容的目的,就不可能推荐任何不同的内容。