这里有一个新的CMake用户。
我创建了一个简单的只包含头文件的库,包含以下CMake文件:
cmake_minimum_required(VERSION 3.7)
project(mylib VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)
#add_compile_options(-Wa -aslh)
# Define the library target
add_library(mylib INTERFACE)
target_include_directories(mylib INTERFACE include/)
add_executable(mytest test/basic_checks.cpp)
target_link_libraries(mytest mylib)
从http://foonathan.net/blog/2016/03/03/cmake-install.html开始
我了解到安装一个库并使其在另一个CMake项目中可用需要几个步骤。首先必须“安装”它,然后必须“导出”它。然后是find_package,但我将在完成前两个步骤后跨越这座桥梁。
因此,按照这个示例,我认为可以将以下内容添加到CMake文件的底部:
# Install the header file.
install(FILES include/mylib.hpp DESTINATION "include/mylib-${PROJECT_VERSION}")
但是指南也谈到了在目标上使用install,然后在目标安装命令中添加EXPORT。
这在多大程度上适用于一个只有头文件的库,在这个库中,除了头文件之外,我没有其他文件的编译代码?
如何应用中描述的步骤:http://foonathan.net/blog/2016/03/03/cmake-install.html到仅支持INTERFACE的库?由于项目中缺少.cpp文件,我不禁要问哪些指令适用,哪些指令不适用。
3条答案
按热度按时间enyaitl31#
试试这个:
cmake/mylibConfig.cmake.in
的含量应该只有这个如果你做了所有这些,它不仅使你只有头文件的库“可安装”,而且使它“可查找”。用户将能够像这样导入你的库:
mctunoxg2#
只是对https://stackoverflow.com/a/49143782/2119944的一个小补充
可能cmake/mylibConfig.cmake.in应该看起来像这样:
否则它将指向本地项目目录。
6ie5vjzr3#
在我的例子中,头文件包含在多个子目录中,我只想将它们Map到安装目录并保留相对的文件结构,我从阅读here中了解到,自cmake 3.23版本以来,文件集是实现此目的的首选方式。
这是我用来建图书馆的代码
客户...