构建可选库时的 Cmake 配置文件

Cmake config file when optional libraries are built

我有一个项目,如果用户愿意,您可以或不可以为其构建 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 的那一刻,这个文件也提供了 MYPROG_LIBRARY 指向 gui 的链接,即使它不是构建的。我考虑过将两者分开:

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_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()