学习使用CMake,简单记录一下学到的东西:
CMake使用自己的语法对工程进行配置,方便在各个平台编译。
windows上,安装了CMake后,有gui界面,操作起来很方便。
1.打开gui,选择源码目录(对应${PROJECT_SOURCE_DIR})
2.选择生成目录,最好是${PROJECT_SOURCE_DIR}/build,防止生成文件跟源码搞到一起。
点击configure,偶尔需要两次。configure完工后,去build目录下已经可以看到VS工程文件,打开就可以慢慢调了。
CMake要求不多,编译目录下需要有CMakeList.txt,CMake根据CMakeList酌句执行。
这里贴一个用到的CMakeList.txt,并简单注释(目前理解还不够,仅仅是配置对应了vs的哪一项)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
cmake_minimum_required(VERSION 2.8) #工程名 project(projectName) #输出 message("project source dir: ${PROJECT_SOURCE_DIR}") #添加编译选项 -D为预编译选项 set(CMAKE_C_FLAGS "-fshort-wchar -fPIC -DHAVE_CONFIG_H -O0 -DNDEBUG") set(CMAKE_CXX_FLAGS "-std=c++11 -fshort-wchar -frtti -fPIC -fexceptions -O0 -DNDEBUG" ) #同上 add_definitions(-D_WINDOWS_PLATFORM) #下面是一些CMake的编程语法 set用的最多,就是设置变量 类似于 += set(DIR_LIST src src/utils ) foreach(DIR ${DIR_LIST}) #message("dir:${DIR}") #查找当前目录下所有的源文件并保存在SRC中 aux_source_directory(${DIR} SRC) #message("src:${SRC}") set(SRC_LIST ${SRC_LIST} ${SRC}) endforeach(DIR) set(SRC_LIST ${SRC_LIST} demo/windows/main.cpp ) #message("srclist:${SRC_LIST}") #add_subdirectory(${PROJECT_SOURCE_DIR}/deps/curlcpp) #添加到头文件 include_directories( ${PROJECT_SOURCE_DIR}/demo/windows/include ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src/ ) #附加库目录 link_directories(${PROJECT_SOURCE_DIR}/demo/windows/libs/) #使用SRC_LIST中的文件生成可执行文件hello add_executable(hello ${SRC_LIST} ) #附加依赖项 target_link_libraries(hello OpenGL32 GLU32) |
下面是一篇极好的CMake学习文档,CMake practice
非常好,谢谢