cmake学习(二)
编译多文件
一般写代码的时候都会使用包含头文件和cpp文件的方式
# 将指定的目录添加到编译器用于搜索头文件的目录。相对路径被解释为相对于当前源目录。
# 命令原型: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
include_directories(include) # 添加头文件目录
# 获取 src/ 目录下所有的cpp 文件 作为 SOURCE(自定义的名字),这样可以省去在生成可执行文件的时候写好多cpp
file(GLOB SOURCE "src/*.cpp") # 源文件
#该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名
# aux_source_directory(<dir> <variable>)
aux_source_directory(/home/tjk/CLionProjects/cmake_demo/demo2/src SRC_ALL)
#为了避免在生成可执行文件的时候写好多cpp,也可以使用set 命令设置变量
set(SOURCE "src/say_hello.cpp" "main.cpp") # 将 cpp 文件 统一赋给 SOURCE
Demo 2:
可以在 build 文件夹下执行
cmake ..
这样生成的文件都会在build 文件夹下,避免污染文件夹。
// main.cpp
#include "say_hello.h"
int main()
{
say_hello();
return 0;
}
//===========================================
//say_hello.h
#ifndef CMAKE_DEMO_SAY_HELLO_H
#define CMAKE_DEMO_SAY_HELLO_H
void say_hello();
#endif //CMAKE_DEMO_SAY_HELLO_H
//===========================================
//say_hello.cpp
#include "say_hello.h"
#include <iostream>
using namespace std;
void say_hello()
{
cout<<"hello cmake"<<endl;
写法 1
# CMakeLists.txt
# :
cmake_minimum_required(VERSION 3.16)
project(demo2)
include_directories(/home/tjk/CLionProjects/cmake_demo/demo2/include) # 包含头文件的路径
add_executable(demo2 main.cpp src/say_hello.cpp) #生成可执行文件
写法 2
#cmake_minimum_required(VERSION 3.16)
#project(demo2)
#include_directories(/home/tjk/CLionProjects/cmake_demo/demo2/include)
#file(GLOB src_all src/*.cpp)
#add_executable(demo_2 main.cpp ${src_all})
写法 3
cmake_minimum_required(VERSION 3.16)
project(demo2)
include_directories(/home/tjk/CLionProjects/cmake_demo/demo2/include)
set(SOURCE "src/say_hello.cpp" "main.cpp") # 将 cpp 文件 统一赋给 SOURCE
add_executable(demo2 ${SOURCE})
写法 4
cmake_minimum_required(VERSION 3.16)
project(demo2)
set(CMAKE_CXX_STANDARD 11)
include_directories(/home/tjk/CLionProjects/cmake_demo/demo2/include)
aux_source_directory(/home/tjk/CLionProjects/cmake_demo/demo2/src SRC_ALL)
add_executable(demo_2 main.cpp ${SRC_ALL})
版权声明:本文为qq_33728095原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。