cmake_minimum_required(VERSION 3.10) # 必须
set(CMAKE_CXX_STANDARD 14) # C++14
project(HelloWorld) #工程名
include_directories("/usr/local/include/") # 头文件目录
link_directories("/usr/local/lib/") # 链接库目录
aux_source_directory(. SRCS) # 源文件
aux_source_directory(./abc SRCS)
set(CMAKE_C_FLAGS "-O1") # 设置C工程的 CFLAGS
set(CMAKE_CXX_FLAGS "-O0 -Werror") # 设置C++ 工程的 CXX_FLAGS
add_executable(${PROJECT_NAME} ${SRCS}) # 生成可执行文件,这里程序名即为功能名
target_link_libraries(${PROJECT_NAME} pthread) # 链接库
# 下面使用install作为项目打包使用
set(CMAKE_INSTALL_PREFIX ./dist) # 自定义安装目录,打包使用
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) # 打包二进制文件
set(CONFIGS ${PROJECT_SOURCE_DIR}/hello.cf)
install(FILES ${CONFIGS} DESTINATION config) # 打包配置文件
add_subdirectory(subdir) 多个目录多个工程使用这个命令
需要经过三个阶段 cmake make make install cmake中写的install就是指的把编译好的东西打包放到一个地方去 方便程序启动等等
make install
一般开源项目需要安装的,都有make install命令,这个命令是通过install函数实现的。安装的时候一般都需要指定安装路径,cmake里面通过设置CMAKE_INSTALL_PREFIX来实现的,可以在执行cmake的时候直接指定,比如cmake .. -DCMAKE_INSTALL_PREFIX=./local,Linux环境默认是/usr/local目录。可以使用此命令进行工程打包发布操作。
# 安装可执行文件
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) # 安装在 /usr/local/bin目录
# 安装动态库到lib目录
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib) # 安装在 /usr/local/lib目录
install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib) # 多用于静态库
# 安装对外头文件
install(TARGETS ${XXXX} PUBLIC_HEADER DESTINATION include)
# 安装其他文件,比如配置文件
install(FILES ${CONFIGS} DESTINATION config)