cmake
注释#
-
命令
-
【启动】
- cmake .. -DMAIN=__ABCD__
- make
-
【变量】
- ${CMAKE_CURRENT_SOURCE_DIR}
- 当前CMakeLists.txt所在目录
- ${CMAKE_CURRENT_SOURCE_DIR}
-
【常规开头】
- cmake最低版本
- cmake_minimum_required(VERSION 3.28)
- 设置项目名称
- project(test)
- 设置C++版本
- set(CMAKE_CXX_STANDARD 11)
- 定义宏
- add_definitions(-DMY_MACRO)
- cmake最低版本
-
【全局设置】
- .h 目录
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
- .cpp源文件
- file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
- 绝对路径
- file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
- .a .so目录
- link_directories(${PHOME}/lib2)
- 链接.a .so
- link_libraries(fun)
- 输出路径
- .exe -生成目录
- set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
- .a .so -生成目录
- set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib1)
- .so -生成目录
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
- .a -生成目录
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
- .exe -生成目录
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
- .exe -生成目录
- .h 目录
-
【目标文件生成】
- 链接.c .cpp生成exe
- add_executable(run ${SRC1} ${SRC2})
- 链接生成静态库
- add_library(fun STATIC ${SRC})
- 链接生成动态库
- add_library(fun SHARED ${SRC})
- 链接.c .cpp生成exe
-
【target设置】
- target_
- #链接动态库
- target_link_libraries(run fun)
- # 库.a .so目录
- target_link_directories(run PUBLIC ${PHOME}/lib ${PHOME}/dil)
- PUBLIC PRIVATE
- target_link_directories(run PUBLIC ${PHOME}/lib ${PHOME}/dil)
- # 头.h目录
- target_include_directories(run PUBLIC ${PHOME}/include)
- PUBLIC PRIVATE
- target_include_directories(run PUBLIC ${PHOME}/include)
- #链接动态库
- 重设【文件名】
- SET_TARGET_PROPERTIES (dil1 PROPERTIES OUTPUT_NAME calc)
- SET_TARGET_PROPERTIES (lib1 PROPERTIES OUTPUT_NAME calc)
- 重设【输出路径】
- 1
- set_target_properties(lib1
- PROPERTIES ARCHIVE_OUTPUT_DIRECTORY
- ${PHOME}/lib)
- # ARCHIVE_OUTPUT_DIRECTORY
- 静态库输出路径
- # LIBRARY_OUTPUT_DIRECTORY
- 动态库输出路径
- # RUNTIME_OUTPUT_DIRECTORY
- exe输出路径
- 1
- target_
-
【嵌套】
- add_subdirectory(src) 嵌套子目录
-
-
使用
-
【cmake简单使用】
- target级
- 常规开头
- cmake_minimum_required(VERSION 3.28)
- project(test)
- SET(CMAKE_CXX_STANDARD 11)
- SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
- 源文件获取
- file(GLOB SRC ${PHOME}/src/*.c*)
- 编译链接目标
- add_executable(exe ${SRC})
- target_include_directories(exe PUBLIC ${PHOME}/include)
- set_target_properties(exe PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
- 常规开头
- 全局
- 常规开头
- cmake_minimum_required(VERSION 3.28)
- project(test)
- SET(CMAKE_CXX_STANDARD 11)
- SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
- 源文件
- file(GLOB SRC ${PHOME}/src/*.c*)
- 全局设置
- include_directories(${PHOME}/include)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
- 编译链接目标
- add_executable(exe ${SRC})
- 常规开头
- target级
-
【动态库 静态库 创建】
- 常规开头
- cmake_minimum_required(VERSION 3.28)
- SET(CMAKE_CXX_STANDARD 11)
- SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
- 源文件
- file(GLOB SRC ${PHOME}/src/add.cpp ${PHOME}/src/mult.cpp)
- 全局设置
- #include_directories(${PHOME}/include)
- .h目录
- #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
- #动态库路径
- #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
- #静态库路径
- #include_directories(${PHOME}/include)
- 编译链接目标
- add_library(fun1 STATIC ${SRC})
- add_library(fun2 SHARED ${SRC})
- set_target_properties(fun1 PROPERTIES OUTPUT_NAME calc)
- 改库【名字】
- set_target_properties(fun2 PROPERTIES OUTPUT_NAME calc)
- set_target_properties(fun1 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
- 改库【路径】
- set_target_properties(fun2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
- target_include_directories(fun1 PUBLIC ${PHOME}/include)
- 包含.h目录
- target_include_directories(fun1 PRIVATE ${PHOME}/include)
- 常规开头
-
【动态库 静态库使用】
- 全局
- 常规开头
- cmake_minimum_required(VERSION 3.28)
- project(test)
- SET(CMAKE_CXX_STANDARD 11)
- SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
- 源文件
- file(GLOB SRC ${PHOME}/src/main.cpp)
- 全局设置
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
- include_directories(${PHOME}/include)
- link_directories(${PHOME}/lib ${PHOME}/dil)
- #优先使用动态库
- link_libraries(calc)
- 编译链接目标
- add_executable(run ${SRC})
- 常规开头
- target级
目标文件- 常规开头
- cmake_minimum_required(VERSION 3.28)
- project(test)
- SET(CMAKE_CXX_STANDARD 11)
- SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
- 源文件
- file(GLOB SRC ${PHOME}/src/main.cpp)
- 编译链接目标
- add_executable(run ${SRC})
- 编译链接生成exe
- target_link_directories(run PUBLIC ${PHOME}/lib ${PHOME}/dil)
- 指定【库】目录
- target_link_libraries(run calc)
- target_include_directories(run PUBLIC ${PHOME}/include)
- 指定.h目录
- set_target_properties(run PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
- exe 生成路径
- add_executable(run ${SRC})
- 常规开头
- 全局
-