gcc make cmake例程

2024-09-08 00:28
文章标签 make cmake gcc 例程

本文主要是介绍gcc make cmake例程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

main.cpp文件:

#include <iostream>
#include "utils.h"int main(void) {int a = 1;int b = 2;int c = AddFunc(a, b);std::cout<< c <<std::endl;return 0;
}

utils.h文件:

#pragma onceint AddFunc(int a, int b);

utils.cpp文件:

#include "utils.h"int AddFunc(int a, int b) {return a+b;
}

gcc编译

GCC:GUN Compiler Collection,GNU编译工具集,包含有C、C++、java等语言的编译器,是一个工具合集。

gcc、g++:GNU C/C++ Compiler,GNU C/C++ 语言编译器,包含在GCC中。一般编译c文件用gcc,cpp文件用g++。

编译和运行:

g++ main.cpp utils.cpp -o main.out
./main.out

make

make是一个命令工具,不是像gcc一样的编译器层面的概念,根据Makefile文件中定义的命令来执行单个或多个文件的编译或其他工作。Makefile文件同样是调用gcc等编译器来编译。文件少手写Makefile尚可,多文件可以使用自动化构建工具CMake自动生成Makefile文件。

make默认执行Makefile的第一条指令,其他指令的顺序任意,make执行时会自动判断依赖。make是增量编译,相比单独执行gcc编译指令的全量编译可加快编译速度。

编写Makefile文件:

#可选定义变量
main_file = main.cpp#生成可执行文件,格式:目标:目标所依赖的文件
main.out: main.o utils.o#命令前是TABg++ main.o utils.o -o main.out#编译 main.cpp到目标代码
main.o: $(main_file)g++ -c $(main_file) -o main.o#编译 utils.cpp到目标代码
utils.o: utils.cppg++ -c utils.cpp -o utils.o# 清理
.PHONY : clean
clean:rm -f *.o main.out

CMake

CMake是一个跨平台的自动化构建工具,可以根据不同平台、不同编译器,生成相应的构建文件,如Makefile文件或Visual Studio项目文件,以便后续在不同平台、编译器上执行后续的编译、链接等操作。CMake通过CMakeLists.txt文件定义项目的构建规则、依赖关系、编译选项等。

CMakeLists.txt:

#指定最低版本或范围
cmake_minimum_required(VERSION 3.16.3)
#定义项目名称、自定义版本、使用的语言
project(CMake_demo VERSION 1.0.0 LANGUAGES CXX)
#目标文件名称和源文件
add_executable(main.out main.cpp utils.cpp)
mkdir build && cd build
cmake ..
make

这篇关于gcc make cmake例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146596

相关文章

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

【linux学习指南】Linux编译器 gcc和g++使用

文章目录 📝前言🌠 gcc如何完成🌉预处理(进行宏替换) 🌠编译(生成汇编)🌉汇编(生成机器可识别代码) 🌠链接(生成可执行文件或库文件)🌉函数库 🌠gcc选项🚩总结 📝前言 预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件或库文件) 🌠 gcc如何完成 格式 :gcc [选项] 要编译的文件 [选项] [目标文

gcc编译常见问题

inux C gcc -lm     使用 math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项 ,因为数学函数位于 libm.so 库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如printf)位于 libc.so 库文件中,使用libc.so中的库函数在编译时不需要加-l

ubuntu通过apt的方式更新cmake到最新版(ppa)

添加签名密钥 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - 将存储库添加到您的源列表并进行更新 稳定版 sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic ma

Java的ArrayDeque使用例程

题目要求为: 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接

Windows下使用cmake编译OpenCV

Windows下使用cmake编译OpenCV cmake下载OpenCV下载编译OpenCV cmake下载 下载地址:https://cmake.org/download/ 下载完成,点击选择路径安装即可 OpenCV下载 下载地址:https://github.com/opencv/opencv/releases/tag/4.8.1因为我们是编译OpenCV,下图选择

C++入门(05-2)从命令行执行C++编译器_GCC

文章目录 GCC编译器1. 下载MinGW-w64,安装(不推荐)2. 使用MSYS2安装MinGW-w64(推荐)2.1 安装MSYS22.2 初始化和更新2.3 安装MinGW-w64编译器2.3 在MSYS2 Shell中导航到代码目录2.4 使用 g++ 编译2.5 运行可执行文件 GCC编译器 GCC(GNU Compiler Collection)是一个开源编译器集

gcc 编译器对 sqrt 未定义的引用

man sqrt  Link with -lm. gcc -o test test.c -lm 原因:缺少某个库,用 -l 参数将库加入。Linux的库命名是一致的, 一般为 libxxx.so, 或 libxxx.a, libxxx.la, 要链接某个库就用   -lxxx,去掉头 lib 及 "." 后面的 so, la, a 等即可。 常见的库链接方法为