一、简单工程通过CMake编译
1. 首先完成工程文件的创建
也就是一个main.cpp下所要使用的一些源文件,比如我测试时候使用了加、减、乘、除四个源文件来完成数字的计算,当然四个源文件都是很简单的,只是为了验证Cmake的使用和创建。(只是自己简单学习和使用的记录,大佬看到一笑而过就可以了,如果有不当的地方,希望能够指正)
2. 使用到的源文件
add.cpp
#include "add.h"
int add_function(int x ,int y)
{
return (x+y);
}
add.h
#ifndef _ADD_H
#define _ADD_H
int add_function(int x,int y);
#endif
addition.cpp
#include "addition.h"
int addition_func(int x,int y)
{
return (x/y);
}
addition.h
#ifndef _ADDITION_H
#define _ADDITION_H
int addition_func(int x,int y);
#endif
mult.cpp
#include "mult.h"
int mult_func(int x,int y)
{
return (x*y);
}
mult.h
#ifndef _MULT_H
#define _MULT_H
int mult_func(int x,int y);
#endif
sub.cpp
#include "sub.h"
int sub_func(int x,int y)
{
return (x-y);
}
sub.h
#ifndef _SUB_H
#define _SUB_H
int sub_func(int x,int y);
#endif
main.cpp
#include <iostream>
#include <add.h>
#include <addition.h>
#include <mult.h>
#include <sub.h>
int main(void)
{
//和
int sum = add_func(1,2);
printf("sum:%d\n",sum);
//乘积
int product = mult_func(3,4);
printf("product:%d\n",product);
//差值
int Difference = sub_func(4,1);
printf("Difference:%d\n",Difference);
//余数
int remainder = addition_func(4,2);
printf("remainder:%d\n",remainder);
return 0;
}
3. 常规的方法编译
以Linux为例,采用g++编译器为例。
//使用的源文件与上面的是一致的
g++ -I/“源文件使用的头文件路径” add.cpp mult.cpp additon.cpp sub.cpp main.cpp -o app
//-o app 代表的是编译后生成的可执行文件
从上面的编译过程就可以看出来,如果源文件多的话就不能使用上述的方式进行编译,而且大的工程中源文件更多就不会使用上述的编译方式了,将会使用Cmake和Makefile来进行,本质上内部还是按照上述的方式进行编译的,但是过程会变得简单。
4. Cmake方式编译
4.1 创建CMakeLists.txt文件
通过对基础篇的学习可以了解到对于Cmake编译的方式下,首先需要创建一个CMakeLists.txt,内部包含了源文件的一些链接方式以及指定的输出文件。
以上述文件为例,使用到的CmakeLists.txt文件的内容如下:
#声明使用的最低CMake的版本号
cmake_minimum_required(VERSION 3.16.3)
#工程的名字--可以随便指定根据项目
project(TCP_test_cmake)
#包含使用到的头文件
include_directories(/opt/PA2003/SDK_1.8.0/CMake)
#声明指定的可执行文件(输出的文件)对于输出的可执行文件,需要指明使用到的源文件
#单个一一指定使用到的源文件
#add_executable(app add.cpp mult.cpp sub.cpp addition.cpp main.cpp)
#声明设置源文件及使用到的文件的路径
set(SOURCES_DIR /opt/PA2003/SDK_1.8.0/CMake)
#引用该路径下的所有cpp文件和c文件.SOURCES--代替的源文件的新名字
file(GLOB SOURCES ${SOURCES_DIR}/*.cpp ${SOURCES_DIR}/*.c)
#便捷,直接指定好需要的源文件的路径,如果增加或则删除该路径下的源文件后需要重新执行cmake .(cmake空格.)
add_executable(app ${SOURCES})
上述文件的内部中包含了两种方式,一种是使用一一指定的方式指定要编译的源文件。"#"代表的为注释的内容,当然上述的文件只是一个我学习过程中记录的一个简单的CMake文件,编译的过程为:
//我使用的是Linux环境下的CMake
//首先需要切换到自己工程文件下的路径下
//我的工程文件路径如下
dalyn@ubuntu:/opt/PA2003/SDK_1.8.0/CMake
//执行的指令如下:
dalyn@ubuntu:/opt/PA2003/SDK_1.8.0/CMake:cmake .
对于上述的操作过程后会生成一些过程文件,这些文件中前期学习下我们只需要关注Makefile文件,该文件中包含了源文件以及编译生成的中间文件,同时也包括了中间文件链接起来生成可执行文件的过程。此时,对于可执行文件的生成来说并没有结束,我们还需要在当前路径下执行一下make命令,对于make命令是Makefile的执行命令,只有当前路径下包含有Makefile文件才能执行该命令,对于这个Makefile文件在上述CmakeLists.txt文件cmake后会生成出来到当前的路径下。
cmake .(或简写为cmake .)是一个用于在当前目录中生成构建系统文件的CMake命令。CMake是一个跨平台的开源构建工具,可以根据特定的配置文件生成适用于不同构建系统的项目文件(如Makefile、Visual Studio项目等)。
cmake .命令的作用是在当前目录中查找名为CMakeLists.txt的配置文件,并根据其中的定义生成相应的构建系统文件。在执行这个命令之前,你需要确保当前目录下存在一个有效的CMakeLists.txt文件,其中包含了项目的源文件、依赖项和构建规则等信息。
使用cmake .命令时,CMake将基于CMakeLists.txt文件中的指令和参数来配置和生成构建系统文件。这些构建系统文件可以根据所选的构建工具(如Make、Ninja、Visual Studio等)生成。生成的文件包含了用于编译、链接和构建你的项目所需的命令和规则。
在执行完cmake .命令后,你可以使用相应的构建工具(如make、Visual Studio等)来编译和构建项目。具体的构建过程和操作取决于所使用的构建工具和生成的构建系统文件。
需要注意的是,.(点号)表示当前目录,所以执行cmake .命令时需要在项目的根目录下执行,以便找到正确的配置文件并生成适当的构建系统文件。