生成可选库时的Cmake配置文件

生成可选库时的Cmake配置文件,cmake,config,configuration-files,Cmake,Config,Configuration Files,我有一个项目,如果用户愿意,您可以或不能为其构建GUI。这是一个可选的库 我正在尝试创建一个用于安装的Cmake配置文件,我不知道是否有任何聪明的方法来了解这一点并调整该文件。目前我有: set(MYPROG_INCLUDE_DIRS @CMAKE_INSTALL_PREFIX@/include/myprog) foreach(lib feature geometry gui sensors sensorstream utils) list(APPEND MYPROG_LIBRARIE

我有一个项目,如果用户愿意,您可以或不能为其构建GUI。这是一个可选的库

我正在尝试创建一个用于安装的Cmake配置文件,我不知道是否有任何聪明的方法来了解这一点并调整该文件。目前我有:

set(MYPROG_INCLUDE_DIRS @CMAKE_INSTALL_PREFIX@/include/myprog)

foreach(lib feature geometry gui sensors sensorstream utils)
    list(APPEND MYPROG_LIBRARIES @CMAKE_INSTALL_PREFIX@/lib/libmyprog_${lib}.so)
endforeach()
但在我构建gui的那一刻,这个文件也提供了指向gui的
MYPROG_库
链接,尽管它不是构建的。我考虑将两者分开,如:

set(MYPROG_INCLUDE_DIRS @CMAKE_INSTALL_PREFIX@/include/myprog)

foreach(lib feature geometry sensors sensorstream utils)
    list(APPEND MYPROG_LIBRARIES @CMAKE_INSTALL_PREFIX@/lib/libmyprog_${lib}.so)
 endforeach()

set(MYPROG_LIBRARIES_GUI CMAKE_INSTALL_PREFIX@/lib/libmyprog_gui.so)
但是如果我构建gui,我现在必须执行不同的调用来获取所有库


在我的Cmake中,如果无法构建GUI,我将
BUILD\u GUI
设置为0。有什么方法可以使用它吗?

您可以建立组件列表,然后将其放入配置文件:

set(COMPONENTS lib feature geometry sensors sensorstream utils)
if(BUILD_GUI)
  list(APPEND COMPONENTS gui)
endif()
在配置文件中

foreach(lib @COMPONENTS@)
    list(APPEND MYPROG_LIBRARIES @CMAKE_INSTALL_PREFIX@/lib/libmyprog_${lib}.so)
endforeach()

可能应该是
foreach(lib@COMPONENTS@)
,是吗?