使用 CMakeLists.txt 管理 c 语言项目简述

73 阅读1分钟

项目结构

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官网下载安装