代码拉取完成,页面将自动刷新
# CMakeLists.txt
cmake_minimum_required(VERSION 3.12)
project(demo VERSION 1.0)
# 将 cmake 中的各种目录变量设成 GNU 标准的值
include(GNUInstallDirs)
include(GenerateExportHeader)
###############################################################################
# 设定其中一个目标 my_math,是动态库的形式
add_library(my_math SHARED my_math.cc)
# 在 build 目录生成 my_math_export.h,内部自动生成了 windows 导出符号的定义
generate_export_header(my_math)
# 定义 my_math 目标的相关属性
target_include_directories(my_math PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include)
set_target_properties(my_math PROPERTIES PUBLIC_HEADER ${CMAKE_SOURCE_DIR}/include/my_math.h PUBLIC_HEADER ${CMAKE_BINARY_DIR}/my_math_export.h)
###############################################################################
# 定义第二个目标 my_math_app,是可执行文件,它依赖 my_math 这个动态库
add_executable(my_math_app main.cc)
target_link_libraries(my_math_app my_math)
target_include_directories(my_math_app PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include)
###############################################################################
# 安装必须指定具体的目标,安装的内容则是所指定目标的具体产出,如果目标需要作为导出的 package,
# 供其他 cmake 项目导入,则在安装 target 时需定义 EXPORT,并使用 install(EXPORT) 来生成
# cmake 文件
# 生成 package 的 config 文件
include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/my_mathConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/my_math)
# 安装的使用使用 cmake --install .--prefix <your_path> 指定安装目录
install(TARGETS my_math EXPORT my_math)
install(EXPORT my_math DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/my_math)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/my_mathConfig.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/my_math)
message("Processing CMakeLists.txt")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。