cmake example

# 建立debug/release两目录,分别在其中执行cmake -DCMAKE_BUILD_TYPE=Debug(或Release),
# 需要编译不同版本时进入不同目录执行make即可
# ${projectname_SOURCE_DIR}表示根源文件目录,${ projectname _BINARY_DIR}表示根二进制文件目录
# SET(NAME, VALUE)  设置变量的值.
# CMAKE_C_COMPILER  指定C编译器,通常,CMake运行时能够自动检测C语言编译器。
# CMAKE_CXX_COMPILER  指定C++编译器
# CMAKE_C_FLAGS  指定编译C文件时编译选项,比如-g指定产生调试信息。
# CMAKE_CXX_FLAGS  指定编译C++文件时编译选项,比如-g指定产生调试信息。
# EXECUTABLE_OUTPUT_PATH  指定可执行文件存放的路径。
# LIBRARY_OUTPUT_PATH  指定库文件放置的路径

#指定项目名. 使用${HELLO_SOURCE_DIR}表示项目根目录
PROJECT(main)

#最低cmake版本
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 

#指定头文件的搜索路径,相当于指定gcc的-I参数
include_directories(${HELLO_SOURCE_DIR}/.)

#动态链接库或静态链接库的搜索路径,相当于gcc的-L参数
link_directories (${HELLO_BINARY_DIR}/.) 

#添加编译参数
add_definitions(-Wall -std=c99 -DDEBUG)

#生成静态连接库
ADD_LIBRARY(main_static STATIC test.c)

#生成动态连接库
ADD_LIBRARY(main_shared SHARED test.c)

#提取此目录下源代码文件到变量中(不含.H)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)

#生成可执行文件.
ADD_EXECUTABLE(main  ${DIR_SRCS} )

#添加生成依赖库,所有项目都会使用.
link_libraries( lib1 lib2 ...)

#生成可执行文件需要的动态库或静态库, 相同于指定-l参数
TARGET_LINK_LIBRARIES( main  main_shared )

#添加子目录
ADD_SUBDIRECTORY( subsrc )

posted @ 2012-10-18 15:04  legendmaner  阅读(593)  评论(0)    收藏  举报