【CMake系列】09-cmake install

本节我们来学习,cmake的安装,将我们构建的目标安装到指定位置,为了模拟一般情况,实现了 可执行文件、静态库、动态库的安装,以及一般的 file 安装、代码的安装

本专栏的实践代码全部放在 github 上,欢迎 star !!!

如有问题,欢迎留言、或加群【392784757】交流

接下来将分步给出今天的CMakeLists.txt 内容

cmake_minimum_required(VERSION 3.20)

project(cmake_install)

静态库的构建

# 静态库 导出 .lib .a
file(WRITE include/slib.h "void slib();")
# 私有头文件
file(WRITE include/slib_pri.h "#define PRI")

file(WRITE slib.cpp "void slib(){}")

add_library(slib STATIC slib.cpp include/slib.h include/slib_pri.h)

set_target_properties(slib PROPERTIES
PUBLIC_HEADER include/slib.h
)

set_target_properties(slib PROPERTIES
PRIVATE_HEADER include/slib_pri.h
)

动态库的构建【需要设置在windows平台下 符号导出】

file(WRITE include/dlib.h [=[
#ifdef _WIN32
__declspec(dllexport)
#endif
void dlib();
]=])

file(WRITE dlib.cpp [=[
#include "dlib.h"
void dlib(){}
]=])

add_library(dlib SHARED dlib.cpp include/dlib.h)
target_include_directories(dlib PUBLIC include)

可执行程序的构建

file(WRITE main.cpp [=[
#include "dlib.h"
#include "slib.h"

int main()
{
  dlib();
  slib();
  return 0;
}

]=])

add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)

target_link_libraries(${PROJECT_NAME} dlib)
target_link_libraries(${PROJECT_NAME} slib)

安装构建目标

默认安装路径

  • linux /usr/local
  • windows c:/program files(x86) 【会出现权限不够、安装失败的情况】
  • windows 默认构建是 debug版本,安装是 release 版本,因此执行命令时需要指定 --config 统一

安装路径指定,两种方式

  • -DCMAKE_INSTALL_PREFIX=
  • set(CMAKE_INSTALL_PREFIX " ")

安装

install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)

install(TARGETS dlib slib 
RUNTIME DESTINATION bin 
ARCHIVE DESTINATION lib
# 头文件的安装
PUBLIC_HEADER DESTINATION include # 公开头文件 
PRIVATE_HEADER DESTINATION inc # 内部头文件
)

debug release 设置不同输出路径

install(TARGETS ${PROJECT_NAME}
CONFIGURATIONS Debug
RUNTIME DESTINATION debug/bin

)

install(TARGETS ${PROJECT_NAME}
CONFIGURATIONS Release RelWithDebInfo MinSizeRel
RUNTIME DESTINATION release/bin
)

构建指令 windows,注意指定类型

cmake -S . -B win -DCMAKE_INSTALL_PREFIX=win_out
cmake --build win --config Debug
cmake --install win --config Debug
posted @ 2024-06-12 13:34  蔡不菜和他的uU们  阅读(13)  评论(0编辑  收藏  举报