构建可选库时的 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()
我有一个项目,如果用户愿意,您可以或不可以为其构建 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()