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 设置需要链接库文件的名称.

京公网安备 11010502036488号