我已经在多个地方看到了在定义包含目录时使用生成器表达式的引用,因此您可以在编译和安装期间为包含项定义不同的位置。例如:
# Define headers for this library. PUBLIC headers are used for
# compiling the library,and will be added to consumers' build
# paths.
target_include_directories(lib PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE src)
我正在构建一个库项目,并且由于我使用的是标准路径(静态库为lib/
,公共头文件为include/
),所以我希望通过设置{{ 1}},并使用简单的CMAKE_INSTALL_PREFIX
调用,例如:
install()
我的期望是set(CMAKE_INSTALL_PREFIX "${MY_INSTALL_DIR}")
install(TARGETS mylibrary ARCHIVE PUBLIC_HEADERS)
将是两者的默认设置,因此我只是告诉CMake安装此类文件。当然,它不起作用,我需要显式设置库和头文件的目标。
所以问题仍然存在:如果我似乎仍然无法使用DESTINATION
,那么开始时生成器表达式的用例是什么?
这是我的示例CMakeLists.txt:
INSTALL_INTERFACE