cmake - 如何使用配置文件创建一个 cmake 库项目?
问题描述
我完全被卡住了:/。我创建了一个简单的测试“库”,其中包含两个文件fruits.cpp
和fruits.h
.
然后我创建了这个CMakeLists.txt
(按照本教程)
cmake_minimum_required(VERSION 3.16)
project(fruits_Lib)
add_library(fruits_Lib STATIC)
target_sources(fruits_Lib
PRIVATE
"fruits.cpp"
)
set(include_dest "include/fruits-1.0")
set(main_lib_dest "lib/fruits-1.0")
set(lib_dest "${main_lib_dest}/${CMAKE_BUILD_TYPE}")
target_include_directories(fruits_Lib
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${include_dest}>"
)
add_library(fruits::fruits ALIAS fruits_Lib)
install(TARGETS fruits_Lib EXPORT fruits DESTINATION "${main_lib_dest}")
install(FILES "include/fruits/fruits.h" DESTINATION "${include_dest}")
install(EXPORT fruits DESTINATION "${lib_dest}")
这可以编译和安装等,我什至可以add_subdirectory
在父项目中使用它。
事实上,这个安装的文件是:
lib/fruits-1.0/libfruits_Lib.a
lib/fruits-1.0/Debug/fruits-debug.cmake
lib/fruits-1.0/Debug/fruits.cmake
lib/fruits-1.0/libfruits_Libd.a
lib/fruits-1.0/Release/fruits-release.cmake
lib/fruits-1.0/Release/fruits.cmake
include/fruits-1.0/fruits.h
但是,当我尝试在父项目中执行以下操作时:
find_package(fruits CONFIG REQUIRED)
我得到错误:
CMake Error at CMakeLists.txt:21 (find_package):
Could not find a package configuration file provided by "fruits" with any
of the following names:
fruitsConfig.cmake
fruits-config.cmake
这些文件绝对不是由上面创建或安装的CMakeLists.txt
:/。
我究竟做错了什么?如何创建一个提供此类配置文件的静态库,以便我可以使用它(安装后)find_package(fruits CONFIG)
?
解决方案
我认为find_package()
是用于定位和使用外部和已安装的组件/库,因此您必须先安装库。
推荐阅读
- php - 完整性约束违反连接表MySql
- javascript - 导航栏上的下拉菜单在 Safari 中不起作用,但在 Chrome 中起作用
- jenkins - Jenkins Groovy,Jenkins DSL 脚本
- c++ - 基于 CLRS 的合并排序 C++ 上的算法介绍,带倒数计数
- math - 十六进制(数字)所需的数学指导
- python - 在熊猫数据框中为给定的列值创建顺序 ID
- reactjs - 在 React 中对 props 的属性进行 Props 验证
- django - 如何在外部 python 脚本 django 中导入模块
- craftcms - 如何添加资产字段
- php - PHP - 在 3 维数组中循环提供有线输出