cmake 2_学习之IMPORTED

首先来看一下这一行:add_library(myLib SHARED IMPORTED)

IMPORTED关键字指明:增加库引用,mylib,仅仅只是声明,实际上要引用的myLib已经被其它项目创建好,这里只是进行引用, 但还是需要头文件,所以完整的代码应当是如下:

cmake_minimum_required(VERSION 3.12)

project(CommandImportProject)

add_library(mysqrt SHARED IMPORTED)

# 设置mysqrt的库文件位置,库文件已经提前生成好
set_property(TARGET mysqrt PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/childLibrary/libsqrt.so")

add_executable(main "main.cpp")

#包含头文件并进行链接
target_include_directories(main PRIVATE "${PROJECT_SOURCE_DIR}/childLibrary")
# main可执行文件链接到mysqrt库
target_link_libraries(main mysqrt)




cmakelist.txt中代码为cmake_minimum_required(VERSION 3.16) # 声明该项目的名称和版本号 project(MyLib VERSION 1.0) # 添加库代码文件到该库 add_library(mylib STATIC src/header.cpp) add_library(mylib_shared SHARED src/header.cpp) include_directories(include) # set(PUBLIC_HEADER) # 指定install路径,以便于其他项目找到该库 install(TARGETS mylib mylib_shared EXPORT MyLibConfig ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include) install(FILES include/header.h DESTINATION include) # 生成MyLibConfig.cmake文件 include(CMakePackageConfigHelpers) write_basic_packMyLibConfigage_version_file( "${CMAKE_CURRENT_BINARY_DIR}/MyLibConfigVersion.cmake" VERSION ${MyLib_VERSION} COMPATIBILITY AnyNewerVersion ) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/MyLibConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/MyLibConfig.cmake" INSTALL_DESTINATION cmake ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/MyLibConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/MyLibConfigVersion.cmake" DESTINATION cmake ),同级目录下的MyLibConfig.cmake.in代码为# 指定该项目的名称和版本号 set(MyLib_VERSION @MyLib_VERSION@) set(MyLib_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") set(MyLib_LIBRARIES "@CMAKE_INSTALL_PREFIX@/lib/libmylib.a") set(MyLib_LIBRARIES_SHARED "@CMAKE_INSTALL_PREFIX@/lib/libmylib_shared.so") # 导入MyLib的目标 include("${CMAKE_CURRENT_LIST_DIR}/MyLibTargets.cmake"),同级目录下的MyLibTargets.cmake代码为# 导入mylib静态库 add_library(MyLib::mylib STATIC IMPORTED) set_target_properties(MyLib::mylib PROPERTIES IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/lib/libmylib.a" ) # 导入mylib_shared动态库 add_library(MyLib::mylib_shared SHARED IMPORTED) set_target_properties(MyLib::mylib_shared PROPERTIES IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/lib/libmylib_shared.so" ) # 导出MyLib的目标 install( EXPORT MyLibConfig NAMESPACE MyLib:: DESTINATION cmake ),为什么执行make install命令后的cmake目录下没有MyLibTargets.cmake文件
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值