编译过程,make,makefile,cmake,qmake,cmakelist总结

一、关于C语言的编译过程预编译编译链接1.-E预编译gcc –E 参数代表预编译 gcc -o a1.c -E a.c 预编译a.c,预编译之后的文件名叫a1.c 预编译功能之一:将#include包含的头文件做简单的文本替换 在C语言中#开头的语句又叫预编译指令 预编译功能之二:将代码中的注释删除2.-c编译编译的作用是把文本的c语言编译为二进制的指令 gcc -o a.o -c
摘要由CSDN通过智能技术生成

一、关于C语言的编译过程

预编译
编译
链接
1.-E预编译

gcc –E 参数代表预编译
gcc -o a1.c -E a.c
预编译a.c,预编译之后的文件名叫a1.c
预编译功能之一:将#include包含的头文件做简单的文本替换
在C语言中#开头的语句又叫预编译指令
预编译功能之二:将代码中的注释删除

2.-c编译

编译的作用是把文本的c语言编译为二进制的指令
gcc -o a.o -c a1.c
编译a11.c,编译后的文件名叫a.o

3.链接

C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
gcc没有单独的链接参数
gcc -o a a.o
链接a.o,最后生成的文件叫a

二、关于make

make是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写makefile,make命令会去找到makefile文件并执行。

三、关于makefile

1. 一个规则
    目标:依赖
       命令

2. 两个函数
    查找文件:src = $(wildcard ./*.c) 
    匹配替换:obj = $(patsubst %.c, %.o, $(src))

3. 三个自动变量
    $@: 目标
    $^: 全部的依赖
    $<: 依赖中的第一个

三、关于cmake

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

四、关于qmake

qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。他会根据.pro文件的配置情况来生长Makefile。

五、关于cmakelist.txt(转载自http://blog.csdn.net/gxuan/article/details/7701035)

CMakeListserv.txt的写法

1.要求CMake根据指定的源文件生成可执行文件

add_executable(hello main.cpp)
add_executable(demo main.cpp main.h main.rc)这奖使用main.cpp源文件,main.h文件,main.rc文件构造可执行文件。至于如何使用这些文件,CMake比我们都清楚。

2.调试CMakeLists.txt的办法

MESSAGE(“俺们正在生成项目文件”):会显示一个警告框。
MESSAGE(STATUS “俺们正在创建项目文件”):遇到这条指令,会把文字显示在状态栏里面(一闪而过,不容易发现)。
MESSAGE(FATAL_ERROR “严重错误,俺们搞不定啦”):这条指令会提示出错,并退出。

3.使用标准模块

cmake提供了很多标准模块,扩展名都是txt我们可以直接包含进来。就像使用C语言的#include指令一般。比如:
INCLUDE(FindBoost)
一句话,就告诉了CMake“我们的程序需要Boost”。

4.使用变量 .

SET( MY_SOURCES main.cpp widget.cpp)
MESSAGE(STATUS “my sources: MYSOURCES")使SET()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_Web3_社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值