一、CMakeLists.txt文件是cmake用来生成Makefile文件需要的一个描述编译链接的规则文件。
二、测试实例
2.1 CMakeLists.txt
# 指定工程名
PROJECT (HELLO)
# 现阶段,你只需要了解 SET 指令可以用来显式的定义变量即可
# 将 hello.cpp 赋值给 SRC_LIST 变量,也可以指定多个源文件,用空格隔开
# SET(SRC_LIST hello.cpp add.cpp sub.cpp)
SET(SRC_LIST testa.c testb.c)
# 输出打印构建目录
MESSAGE(STATUS "This is HELLO_BINARY_DIR " ${HELLO_BINARY_DIR})
# 输出打印资源目录
MESSAGE(STATUS "This is HELLO_SOURCE_DIR " ${HELLO_SOURCE_DIR})
# 输出打印资源目录,与HELLO_SOURCE_DIR 一样
MESSAGE(STATUS "This is PROJECT_SOURCE_DIR " ${PROJECT_SOURCE_DIR})
# 输出打印 CMake 资源目录,与 PROJECT_SOURCE_DIR 一样
MESSAGE(STATUS "This is CMAKE_SOURCE_DIR " ${CMAKE_SOURCE_DIR})
# 生成可执行文件 hello ,${SRC_LIST}是引用变量,也就是源文件 hello.cpp
ADD_EXECUTABLE(hello ${SRC_LIST})
2.2 test.h
#ifndef _TEST_H_
#define _TEST_H_
struct bluez_a2dp_codec {
int id;
};
const struct bluez_a2dp_codec **bluez_a2dp_codecs;
#endif
2.3 testa.c
#include <stdlib.h>
#include <stdio.h>
#include "test.h"
static const struct bluez_a2dp_codec a2dp_codec_source_ldac = {
.id = 120,
};
static const struct bluez_a2dp_codec *a2dp_codecs[] = {
&a2dp_codec_source_ldac,
};
const struct bluez_a2dp_codec **bluez_a2dp_codecs = a2dp_codecs;
extern void test();
int main(void)
{
printf("hello world! id = %d\n",bluez_a2dp_codecs[0]->id);
test();
return 0;
}
2.4 testb.c
#include <stdlib.h>
#include <stdio.h>
#include "test.h"
void test()
{
printf("test! id = %d \n",bluez_a2dp_codecs[0]->id);
}
2.5 在ubuntu上面测试运行结果
三、参考文章
CMake 语法 - 详解 CMakeLists.txt - 简书
CMake 语法 - 详解 CMakeLists.txt - 简书
CMake使用方法以及CMakeLists.txt 学习总结(1)_cmakelist如何使用_deer07的博客-CSDN博客