新的CMake用户。
我使用以下CMake文件制作了一个简单的标题库:
# Install the header file.
install(FILES include/mylib.hpp DESTINATION "include/mylib-${PROJECT_VERSION}")
来自http://foonathan.net/blog/2016/03/03/cmake-install.html
我了解到有几个步骤可以安装库并让它可以从另一个CMake项目中使用。首先,它必须“安装”,然后必须“导出”。然后是find_package,但是在我完成前两步之后我将穿过那座桥。
因此,按照示例,我想我可以将以下内容添加到我的CMake文件的底部:
var notYetAwaited = DoSomethingAsync();
if (done) return "yay!";
await notYetAwaited;
但该指南还讨论了在TARGETS上使用install,然后将EXPORT添加到目标安装命令。
这有多少适用于仅包含标题的库,其中除了标题之外我没有其他文件的编译代码?
如何应用以下所述的步骤:http://foonathan.net/blog/2016/03/03/cmake-install.html 到INTERFACE唯一的图书馆?我的项目中缺少.cpp文件让我质疑哪些说明适用且不适用。
答案 0 :(得分:11)
试试这个:
cmake/mylibConfig.cmake.in
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/mylibTargets.cmake")
check_required_components("@PROJECT_NAME@")
的内容应仅为此
find_package(mylib CONFIG REQUIRED)
target_link_libraries(MyApp mylib) # installed include/ path automatically added
如果您完成所有这些操作,不仅可以使您的标题库“可安装”,而且还可以“查找”。用户可以像这样导入您的库:
new Promise
答案 1 :(得分:0)
只是https://stackoverflow.com/a/49143782/2119944
的一小部分cmake / mylibConfig.cmake.in可能看起来像这样:
@PACKAGE_INIT@
include("${CMAKE_INSTALL_PREFIX}/lib/cmake/mylib/mylibTargets.cmake")
check_required_components("@PROJECT_NAME@")
否则,它将指向本地项目目录。