CMAKE 学习笔记(二)
上篇文字忘记归类了,现在也不知道怎么修改过来,第一创建个人c++博客
cmake学习笔记1上次简单的语法指令有
PROJECT
SET
MESSAGE
ADD_EXECUTABLE上次我们是采用in-source-build内部构建
对于大的项目(o(╯□╰)o,helloworld这个就很小了)一般使用out-source-build外部构建的方式来
创建工程
Example2 外部构建的helloworld简单工程
目录结构如图

build目录为我们构建工程所在的目录,目录可更改
src目录为源文件目录
工程下的CMakeLists.txt文件内容
PROJECT(HelloWorld)

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

MESSAGE(STATUS "This is BINARY dir " ${HelloWorld_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${HelloWorld_SOURCE_DIR})


ADD_SUBDIRECTORY(src)

MESSAGE(STATUS "Install our project " ${CMAKE_INSTALL_PREFIX})

INSTALL(FILES COPYRIGHT.txt README.txt DESTINATION SDK)
INSTALL(DIRECTORY doc/ DESTINATION SDK/doc)
src目录下的CMakeLists.txt文件
SET(SRC_LIST main.cpp)

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

ADD_EXECUTABLE(helloworld ${SRC_LIST})
运行结果:
在build目录下cmake -DCMAKE_INSTALL_PREFIX=. ..
第一. 指当前目录,如果不指定_DCMAKE_INSTALL_PREFIX,CMAKE_INSTALL_PREFIX的默认值为c:\Program Files\${projectname}下

打开工程文件

编译,默认install项目会被跳过,然后选中install编译

可以看到
相关文件已被复制到指定目录下了

只是这个例子没有把执行文件和相关库复制到SDK中
最后简单总结使用到的新的语法指令
CMake搭建项目工程中每个目录中都应有CMakeLists.txt文件
CMAKE_MINIMUM_REQUIRED(VERSITON 2.6)版本要求,使用cmake-gui时这个是必须加上的
但前最新的cmake版本似乎是2.8
ADD_SUBDIRECTORY指令ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
如果没有指定[binary_dir]默认名称为source_dir
最后是
INSTALL指令INSTALL(FILES COPYRIGHT.txt README.txt DESTINATION SDK)
INSTALL(DIRECTORY doc/ DESTINATION SDK/doc)
目前用的是安装文件和目录 DESTINATION为-DCMAKE_INSTALL_PREFIX指定的目录
就不过多的赘述了~~~