学习了几天cmake,其实cmake还是写的比较死的,没makefile那么灵活,但是相对也是好操作些,学习cmake其实就从案例入手最好
#指出最小支持的cmake版本
cmake_minimum_required(VERSION 2.8)
#指出工程名称,一般也是最终生成程序的名称
project(DEMO4)
# 这句话的意思是将DIR_SRC指代的所有源码都编译后链接到DEMO4中,下面将说如何取得DIR_SRC
add_executable(DEMO4 ${DIR_SRC})
# 也可以这样写:
add_executable(DEMO4 main.cc)
# 将本目录内所有源码都添加,作为一个变量存储在DIR_SRC中,和makefile的patsubstr很像
aux_source_directory(. DIR_SRC)
# 链接库的做法:意思是,将EXTRA_LIBS都链接到
target_link(DEMO4 ${EXTRA_LIBS})
# 也可以这样写:
target_link(DEMO4 libMysql)
# 添加配置文件,需要注意的是,里面的东西需要加引号,这是我发现的第一个需要添加引号的东西
configure_file(
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)
#添加引用文件目录
include_directories(${PROJECT_SOURCE_DIR}/include)
# 添加子目录,这个个人感觉,是子目录需要编译出静态/动态库的时候,或者子目录有东西生成的时候使用,但是隐含了这样的一种关系:子目录生产出东西,肯定是在 ***调用*** 的目录之前!!!!
add_subdirectory(${PROJECT_SOURCE_DIR}/math)
# 也可以这样写:
add_subdirectory(./math)
# 如果变量不存在,创建变量,如果存在,则赋值。以下这句话的意思是,将${EXTRA_LIBS} 以及libMath设置为EXTRA_LIBS,显然,就是说,往EXTRA_LIBS变量中,再添加库libMath
set(EXTRA_LIBS ${EXTRA_LIBS} libMath)
# 链接库位置
link_directories(/usr/local/Celluar/Poco)
# 意思是说,从这里找链接库