深入研究了下Cmake的文档,自己写了个Project模板:
###Cmake tpl by Crazybaby SET(projectName ok) SET(include_dir ${${projectName}_SOURCE_DIR}/D-include /usr/include/ /usr/local/include/) SET(lib_dir ${${projectName}_SOURCE_DIR}/D-lib /usr/lib/ /usr/local/lib/) SET(links_name A) PROJECT(${projectName}) #Cmake Version cmake_minimum_required(VERSION 2.6.4) #2.8 not support relative path #Rm Cmake cache EXEC_PROGRAM(rm ARGS -rf CMakeCache.txt) AUX_SOURCE_DIRECTORY(./src SRC_LIST) #set SET(CMAKE_C_COMPILER "g++") #Function must be declared #Add define ADD_DEFINITIONS(-g -O0 -Wall -DAC_HAS_INFO -DAC_HAS_DEBUG -DAC_HAS_WARNING -DAC_HAS_ERROR) #detail compile progress SET(CMAKE_VERBOSE_MAKEFILE ON) INCLUDE_DIRECTORIES(${include_dir}) LINK_DIRECTORIES(${lib_dir}) ADD_EXECUTABLE(${projectName} ${SRC_LIST}) #link_bin TARGET_LINK_LIBRARIES(${projectName} ${links_name}) ##Message MESSAGE(STATUS "#---------------------------------#") MESSAGE(STATUS "#->Bin dir " ${${projectName}_BINARY_DIR}) MESSAGE(STATUS "#->Source dir " ${${projectName}_SOURCE_DIR}) MESSAGE(STATUS "#---------------------------------#") #Install INSTALL(FILES ${${projectName}_BINARY_DIR}/${projectName} DESTINATION /usr/local/bin/${projectName})这个是生成bin用的,需要自己建立 src ,D-include , D-lib, build目录 ,并把所有源文件放入src中,进入build中cmake .. && make && make install
如图:
. |-- build |-- CMakeLists.txt |-- D-include | `-- libA.h |-- D-lib | `-- libA.a `-- src |-- libA.c `-- main.c静态库和动态库生成:
###Cmake tpl by Crazybaby
SET(projectName ok)
SET(include_dir ${${projectName}_SOURCE_DIR}/D-include /usr/include/ /usr/local/include/)
SET(lib_dir ${${projectName}_SOURCE_DIR}/D-lib /usr/lib/ /usr/local/lib/)
SET(links_name A)
PROJECT(${projectName})
#Cmake Version
cmake_minimum_required(VERSION 2.6.4) #2.8 not support relative path
#Rm Cmake cache
EXEC_PROGRAM(rm ARGS -rf CMakeCache.txt)
AUX_SOURCE_DIRECTORY(./src SRC_LIST)
#set
SET(CMAKE_C_COMPILER "g++") #Function must be declared
#Add define
ADD_DEFINITIONS(-g -O0 -Wall -DAC_HAS_INFO -DAC_HAS_DEBUG -DAC_HAS_WARNING -DAC_HAS_ERROR)
#detail compile progress
SET(CMAKE_VERBOSE_MAKEFILE ON)
INCLUDE_DIRECTORIES(${include_dir})
LINK_DIRECTORIES(${lib_dir})
ADD_LIBRARY(${projectName} STATIC ${SRC_LIST})
ADD_LIBRARY(${projectName}_o SHARED ${SRC_LIST})
#link_bin
SET_TARGET_PROPERTIES(${projectName}_o PROPERTIES OUTPUT_NAME "${projectName}")
##Message
MESSAGE(STATUS "#---------------------------------#")
MESSAGE(STATUS "#->Bin dir " ${${projectName}_BINARY_DIR})
MESSAGE(STATUS "#->Source dir " ${${projectName}_SOURCE_DIR})
MESSAGE(STATUS "#---------------------------------#")
#Install
INSTALL(FILES ${${projectName}_BINARY_DIR}/${projectName} DESTINATION /usr/local/bin/${projectName})
把源文件放入src中,再建立个build , cmake .. && make
大致情况如下:
.
|-- build
|-- CMakeLists.txt
`-- src
|-- hello.c
`-- hello.h