一个简单的CMake案例
新建一个项目03demo
,并在该文件下:
创建main.c
文件
#include <stdio.h> int main() { printf("Hello World!\n"); return 0; }
创建CMakeLists.txt
文件
# CMake需要的最低版本号 cmake_minimum_required (VERSION 2.8) # 项目信息,表示该项目是03demo project (03demo) # 指定生成信息,表示需要将main.c生成main add_executable(main main.c)
执行命令:
$ cmake . $ make
可以生成main执行文件
同一目录,多个源文件
新建一个项目04demo
,并在该文件夹下:
创建main.c
文件
#include <stdio.h> #include "function01.h" int main() { printf("Hello World!\n"); sayHi(); return 0; }
创建function01.h
文件
#include <stdio.h> void sayHi();
创建function01.c
文件
#include "function01.h" void sayHi() { printf("Hi, world!\n"); }
创建CMakeLists.txt
文件
# CMake需要的最低版本号 cmake_minimum_required (VERSION 2.8) # 项目信息,表示该项目是04demo project (04demo) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory (. DIR_SRCS) # 指示变量 DIR_SRCS 中的源文件需要编译成一个名称为 main 的可执行文件 add_executable (main ${DIR_SRCS})
执行命令:
$ cmake . $ make
可生成可执行文件main
多个目录,多个源文件
新建项目05demo
,并在该文件夹下:
创建main.c
文件
#include <stdio.h> #include "function01.h" int main() { printf("Hello World!\n"); sayHi(); return 0; }
创建CMakeLists.txt
文件
# CMake需要的最低版本号 cmake_minimum_required (VERSION 2.8) # 项目信息,表示该项目是05demo project (05demo) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory (. DIR_SRCS) # 添加 say 子目录 add_subdirectory (say) # 指定生成目标 add_executable (main main.c) # 添加链接库 target_link_libraries(main function01)
创建say文件夹
,并在该文件夹下:
创建function01.h
文件
#include <stdio.h> void sayHi();
创建function01.c
文件
#include "function01.h" void sayHi() { printf("Hi, world!\n"); }
创建CMakeLists.txt
文件
# 查找当前目录下的所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory (. DIR_LIB_SRCS) # 生成链接库 add_library (function01 ${DIR_LIB_SRCS})
在05demo文件夹
下,执行命令:
$ cmake . $ make
生成可执行文件夹main
[dm href=’http://hahack.com/codes/cmake/’]参考资料:CMake 入门实战[/dm]