我正在尝试将install目标添加到我的库中。我的源代码和头文件位于src/.
我的文件的相关块CMakeLists.txt:
install(
TARGETS "${PROJECT_NAME}"
EXPORT ionir-config LIBRARY
DESTINATION ${CMAKE_INSTALL_LIBDIR} # Destination is relative to ${CMAKE_INSTALL_PREFIX}.
)
install(
EXPORT ionir-config
NAMESPACE ionir::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ionir
)
install(
DIRECTORY src
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h" PATTERN "LICENSE" # Match only header files & LICENSE file.
)
Run Code Online (Sandbox Code Playgroud)
问题是安装后,输出目录的名称是src:
我希望它是ionir,否则我必须像这样导入文件:
install(
TARGETS "${PROJECT_NAME}"
EXPORT ionir-config LIBRARY
DESTINATION ${CMAKE_INSTALL_LIBDIR} # Destination is relative to ${CMAKE_INSTALL_PREFIX}.
)
install(
EXPORT ionir-config
NAMESPACE ionir::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ionir
)
install(
DIRECTORY src
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h" PATTERN "LICENSE" # Match only header files & LICENSE file.
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
为了避免将目录名称添加到安装路径中,请使用斜杠( )终止该目录/:
install(
DIRECTORY src/
...
)
Run Code Online (Sandbox Code Playgroud)
安装命令的文档中明确说明了这一点:
每个目录名称的最后一个部分将附加到目标目录,但可以使用尾部斜杠来避免这种情况,因为它会将最后一个部分留空。