CMake资料
cmake教程:https://wenku.baidu.com/view/73ab3fcad5bbfd0a79567372.html
cmake常用设置和函数:https://blog.csdn.net/LaineGates/article/details/79190398
https://www.cnblogs.com/Braveliu/p/15591020.html
https://www.cnblogs.com/Braveliu/category/1614009.html
https://blog.csdn.net/Sakaue/article/details/38377661
https://www.jianshu.com/u/08ef8e6eb2f6
## CMake简易教程 ##目录结构 inc adp.h drv.h win.h adp adp.cpp test.cpp drv drv.cpp func.cpp show win.cpp hello.c src main.cpp #设置工程的cmake版本号 cmake_minimum_required(VERSION 3.14.1) #设置工程名称 project(itbugs) #比较判断 set(PATH_TEST_NAME "hello_itbugs") if ("${PATH_TEST_NAME}" STREQUAL "hello_itbugs" OR "${PATH_TEST_NAME}" STREQUAL "itbugs") #定义 set(DIR_SRC_PATH ${CMAKE_SOURCE_DIR}/adp ${CMAKE_SOURCE_DIR}/drv ${CMAKE_SOURCE_DIR}/show ) else() set(DIR_SRC_PATH ${CMAKE_SOURCE_DIR}/adp ${CMAKE_SOURCE_DIR}/drv ${CMAKE_SOURCE_DIR}/show ${CMAKE_SOURCE_DIR}/src ) endif() # 函数 # 搜索目录下的所有源文件 function(glob_all_source_files DIR_LIST) foreach(dir ${DIR_LIST}) file(GLOB_RECURSE SRC_C_LIST "${dir}/*.c") file(GLOB_RECURSE SRC_CXX_LIST "${dir}/*.cpp") list(APPEND FILE_LIST ${SRC_C_LIST} ${SRC_CXX_LIST}) endforeach() set(OBJ_SRC_LIST ${FILE_LIST} PARENT_SCOPE) endfunction() #第二种函数形式 macro(SetProjInfo) set(LIBS_LINK_OPTIONS -fPIC -Wl,-z,relro,-z,now -Wl,-z,noexecstack -pie) set(LIBS_COMPILE_OPTIONS -O2 -Wall -Werror ) endmacro() #调用函数 SetProjInfo(); glob_all_source_files("${DIR_SRC_PATH}") #包含头文件 include_directories( ${DIR_SRC_PATH}) ##调用系统函数排序 list(SORT OBJ_SRC_LIST COMPARE FILE_BASENAME) #添加到动态库 add_library(it_bugs SHARED ${OBJ_SRC_LIST}) #编译选项 target_compile_options(it_bugs PRIVATE ${LIBS_COMPILE_OPTIONS}) #链接选项 target_link_options(it_bugs PRIVATE ${LIBS_LINK_OPTIONS}) set(LIBS_IMG_NAME "IT_BUGS.IMG") # 调用commond命令 add_custom_command( TARGET it_bugs POST_BUILD ##可以调用COMMOND命令,例如改变权限 COMMAND chmod 444 $<TARGET_FILE:it_bugs> COMMAND rm -f ${LIBS_IMG_NAME} && ${LZMA_TOOL} $<TARGET_FILE:it_bugs> ${LIBS_IMG_NAME} -xattrs -root-mode 755 -noappend WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) #发布到指定目录 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LIBS_IMG_NAME} DESTINATION ${CMAKE_SOURCE_DIR}/${LIBS_IMG_NAME} OPTIONAL) install(TARGETS it_bugs ARCHIVE DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/lib/aaa OPTIONAL LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/lib/bbb OPTIONAL RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin/ccc OPTIONAL )
浙公网安备 33010602011771号