1. 编写C++文件(main.cpp)
#include<bits/stdc++.h> using namespace std; int main(void) { printf("Hello World!\n"); return 0; }
2. 编写CMakeList.txt文件
cmake_minimum_required (VERSION 2.8) # cmake的版本 project (Demo) # 工程名称 add_executable(main main.cpp) # 生成可执行文件main,依赖于main.cpp
3. 执行命令生成可执行文件
$ mkdir build && cd build $ cmake ../ $ make $ ./main
4. 运行结果
5. 编写CMakeList.txt的常用命令
# 即把目录 ./ 下的源文件列表存放在 SRC_LIST 变量中 aux_source_directory(. SRC_LIST) # 向当前工程添加多个指定头文件的路径 include_directories(test_func test_func1) # EXECUTABLE_OUT_PATH 和 PROJECT_SOURCE_DIR 是 CMake 自带的预定义变量 # EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置 # PROJECT_SOURCE_DIR:工程的根目录 set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # 生成动态库或静态库 (第1个参数指定库名,第2个参数指定动态还是静态,第3个参数指定生成库的源文件) add_library (testFunc_shared SHARED ${SRC_LIST}) add_library (testFunc_static STATIC ${SRC_LIST}) # 设置目标的一些属性,比如名称,库的版本号 set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc") set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc") # LIBRARY_OUTPUT_PATH: 库文件的默认输出路径 set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) # link_directories: 添加非标准的共享库搜索路径 link_directories (${PROJECT_SOURCE_DIR}/lib) # target_link_libraries: 把目标文件与库文件进行链接 target_link_libraries (main testFunc)
6. link_libraries 和 target_link_libraries 的区别
1)link_libraries用在add_executable之前,target_link_libraries用在add_executable之后.
2)link_libraries 添加需要链接的库文件路径(./lib),target_link_libraries 设置需要链接库文件的名称.