cmake 主要是对 CMakeLists.txt 文件进行编写
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
PROJECT(HELLO)
# 把当前目录下所有源代码文件和头文件加入列表变量 SRC_LIST
AUX_SOURCE_DIRECTORY(. SRC_LIST)
# 也可以使用set命令新建变量来存放需要的源文件建立列表变量
set( SRC_LIST
./main.c
./Func1.c
./Func2.c)
# 生成应用程序hello,调用列表变量
ADD_EXECUTABLE(hello ${SRC_LIST})
# 添加头文件的搜索路径
include_directories(
${PROJECT_SOURCE_DIR}/include/mq
${PROJECT_SOURCE_DIR}/apps/incl
${PROJECT_SOURCE_DIR}/include/rapidjson
)
# 将路径的源文件收集到列表变量
AUX_SOURCE_DIRECTORY (include include_path)
AUX_SOURCE_DIRECTORY (apps app_path)
ADD_EXECUTABLE(hello
src/main.c ${include_path} ${app_path})
# 设置路径 EXECUTABLE_OUTPUT_PATH 是目标二进制可执行文件的存放位置
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# ADD_SUBDIRECTORY 命令,这个命令可以向当前工程添加存放源文件的子目录
ADD_SUBDIRECTORY(src)
# 有时只需要编译出动态库和静态库,然后等着让其它程序去使用,把生成的库文件存放到lib目录下
# 对 源文件变量 生成动态库 testFunc_shared
ADD_LIBRARY(testFunc_shared SHARED ${SRC_LIST})
# 对 源文件变量 生成静态库 testFunc_static
ADD_LIBRARY(testFunc_static STATIC ${SRC_LIST})
# 设置最终生成的库的名称
set_target_properties(testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties(testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
# 设置库文件的输出路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 在指定路径下查找库,并把库的绝对路径存放到变量里
find_library(TESTFUNC_LIB testFunc HINTS ${PROJECT_SOURCE_DIR}/testFunc/lib)
# 把目标文件与库文件进行链接
target_link_libraries(hello ${TESTFUNC_LIB})
# 设置编译选项(配置编译器)
set(CMAKE_C_FLAGS "-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes")
参考内容:
点击这里跳转
https://www.cnblogs.com/LXP-Never/p/15264243.html#blogTitle3