项目结构
utils
|- cacl.c
|- cacl.h
|- CMakeLists.txt
CMakeLists.txt
main.c
子目录 utils
// cacl.h
#ifndef CLANG_PROJECT_CACL_H
#define CLANG_PROJECT_CACL_H
int add(int a, int b);
#endif //CLANG_PROJECT_CACL_H
// cacl.c
#include "cacl.h"
int add(int a, int b) {
return a + b;
}
# 子目录CMakeLists.txt
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库
add_library (myUtilsLib ${DIR_LIB_SRCS})
- 将utils目录下的所有源码编译成 *.o 文件
- 将编译后的文件打包成
静态链接库
主目录
// main.c 源码
#include <stdio.h>
#include "utils/cacl.h"
int main() {
int sum = add(2, 3);
printf("sum = %d\n", sum);
return 0;
}
# 主目录CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(clang_project C)
set(CMAKE_C_STANDARD 99)
# 查找当前目录下的所有源文件,并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 添加子目录
add_subdirectory(utils)
# 指定生成目标
add_executable(clang_project main.c ${DIR_SRCS})
# 添加链接库
target_link_libraries(clang_project myUtilsLib)
- 添加链接库
- 将main.c编译成main.o
- 链接库文件,生成可执行目标
运行
cmake CMakeLists.txt
生成 Makefile 文件
make
生成可执行文件
clang_project.exe
得到运行结果
参考资料
其他资料
备注
本机使用的 cmake 为 CLion IDE 打包进来的命令,位于 C:\Users\mcc.CLionxxx.x\system\cygwin_cmake\bin\cmake.exe
> cmake --version
cmake version 3.15.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
若本机没有cmake命令,可到cmake官网下载安装