1. 程式人生 > >g++,make ,cmake的一些區別

g++,make ,cmake的一些區別

大家都知道,寫程式大體步驟為:

1.用編輯器編寫原始碼,如.c檔案。

2.用編譯器編譯程式碼生成目標檔案,如.o。

3.用連結器連線目的碼生成可執行檔案,如.exe。

但如果原始檔太多,一個一個編譯時就會特別麻煩,於是人們想到,為什麼不設計一種類似批處理的程式,來批處理編譯原始檔呢,於是就有了make工具,它是一個自動化編譯工具,你可以使用一條命令實現完全編譯。但是你需要編寫一個規則檔案,make依據它來批處理編譯,這個檔案就是makefile,所以編寫makefile檔案也是一個程式設計師所必備的技能。

對於一個大工程,編寫makefile實在是件複雜的事,於是人們又想,為什麼不設計一個工具,讀入所有原始檔之後,自動生成makefile呢,於是就出現了cmake工具,它能夠輸出各種各樣的makefile或者project檔案,從而幫助程式設計師減輕負擔。但是隨之而來也就是編寫cmakelist檔案,它是cmake所依據的規則。所以在程式設計的世界裡沒有捷徑可走,還是要腳踏實地的。

原檔案--camkelist ---cmake ---makefile ---make ---生成可執行檔案

相關推薦

Linux下gcc/g++、makecmake區別

文字程式到可執行檔案生成無論在什麼平臺大致分為以下幾個部分:    1.用編輯器編寫原始碼,如.c檔案。    2.用編譯器編譯程式碼生成目標檔案,如.o。    3.用連結器連線目的碼生成可執行檔案,如.exe。    Linux平臺下,.o檔案一般是通過編譯的但還未連結的

g++make cmake一些區別

大家都知道,寫程式大體步驟為:1.用編輯器編寫原始碼,如.c檔案。2.用編譯器編譯程式碼生成目標檔案,如.o。3.用連結器連線目的碼生成可執行檔案,如.exe。但如果原始檔太多,一個一個編譯時就會特別麻煩,於是人們想到,為什麼不設計一種類似批處理的程式,來批處理編譯原始檔呢,

CMakemakeCMakeLists.txtCMakeFiles之間的關係

參考https://www.zhihu.com/question/36609459 對於一個只在windows界混的菜鳥程式設計師,平常用Visual Studio(號稱宇宙最強IDE),就能實現新建工程,編寫*.cpp,*.h,編譯(即build,這裡的編譯實際包括了編譯,彙編,連結等等,

gcc、g++、makecmake區別

      首先介紹一下GCC:GNU Compiler Collection(GNU 編譯器集合),在為Linux開發應用程式時,絕大多數情況下使用的都是C語言,因此幾乎每一位Linux程式設計師面臨的首要問題都是如何靈活運用C編譯器。目前 Linux下最常用的C語言編譯器

spring cloud註冊中心服務提供作者服務消費者的一些區別

Spring Cloud Eureka, 使用Netflix Eureka來實現服務註冊與發現。 Eureka服務端,我們也稱為服務註冊中心。   同其他服務註冊中心 一 樣,支援高可用配置。它依託於強 一 致性提供良好的服務例項可用性,可以應對多種不同的故障場景。如果E

gccmakegdb學習

gcc(編譯器) gcc編譯器可以將C、C++等語言源程式、彙編程式編譯、連結成可執行程式。 make 通常是用make來呼叫gcc編譯. 程式碼檔案多了,就涉及到管理問題,讓你每個都gcc xxx …一下,累啊,所以用make來管理一下,間接呼叫gcc就方便多了,通

make makefile cmake qmake 都是什麼有什麼區別

make 是用來執行Makefile的 Makefile是類unix環境下(比如Linux)的類似於批處理的”指令碼”檔案。其基本語法是: 目標+依賴+命令,只有在目標檔案不存在,或目標比依賴的檔案更舊,命令才會被執行。由此可見,Makefile和make

make makefile cmake qmake都是什麼有什麼區別

1. make 是用來執行Makefile的 2. Makefile是類unix環境下(比如Linux)的類似於批處理的"指令碼"檔案。其基本語法是: 目標+依賴+命令,只有在目標檔案不存在,或目標比依賴的檔案更舊,命令才會被執行。由此可見,Makefile和make可適用於任意工作,不限於程式設計。比

arraylistlinklist的部分源碼介紹和一些區別

copy 因此 else list GC prev RF iou 返回 arraylist: 3個構造器: (1)默認構造器(使用這個構造器初始化的集合容量為默認初始化容量10) public ArrayList() { this.elementDat

linux工程構建:makecmake

linu 很多 命令 cnblogs 高級 href ack pro 之路 make cmake CMake是一個比make更高級的編譯配置工具,它可以根據不同平臺、不同的編譯器,生成相應的Makefile或者vcproj項目。通過編寫CMakeLists.

Ubuntu下cmakemake時報錯找不到自己寫的標頭檔案

首先要把main.cpp和xxx.h,xxx.c放在同一個資料夾下(方便起見)。 然後在cmakelists.txt如下(cmakelists不需要提及標頭檔案,因為這裡標頭檔案和原始檔在同一個路徑) cmake_minimum_required(VERSION 2.8.3) proje

SparkStreaming部分:OutPutOperator類SaveAsHadoopFile運算元(實際上底層呼叫textFileStream讀取的跟前兩種有一些區別)【Java版純程式碼】

package streamingOperate.output; import java.util.Arrays; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; imp

退耦電容旁路電容和濾波電容的一些區別

退耦電容,旁路電容和濾波電容的一些區別  去耦電容: 儲能作用,減少浪湧電流。 增加電源和地之間的交流耦合(注意直流電源裡面也會有少部分交流電)。 電容值較大一般1uF~100uF之間。對於對電源濾波,大於100uF更好,不過相應成本會更高。注意如果輸出訊號濾波的

Okhttp3.0同步與非同步方法使用區別同時需要注意一些細節問題

一、Okhttp3.0 execute 這是同步請求。對於同步請求在請求時需要開啟子執行緒,請求成功後需要跳轉到UI執行緒修改UI。 new Thread(new Runnable() { @Override public

遠程通信的幾種選擇(RPCWebserviceRMIJMS的區別

抽象 接口 sent res 平臺 subscribe 支持 遠程服務 ava RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http協議,發送請求到服務器,等待服務器返回結果。這個請求包括一個參數集和一個文本集,通常形成

javascript中的innerHTMLinnerTextouterHTML的用法及其區別

document 去除html標簽 cnblogs class 示例 scrip ie7 及其 描述 示例html代碼: <div id="test"> <span style="color:red">test1</span>

極快瑞的函數式編程Jquery涉及的一些函數

font ram .ajax 編程 ready .get 功能 read servle $(function(){  一些實現功能的代碼;})————————————文檔載入完成後執行的函數。$(function(){}) 是 $(document).ready(funct

關於offsetXclientXpageX,offsetHeightclientHeight ,scrollHeightX的區別

關於 -a blog 高度 logs 變化 http 狀態欄 技術分享 一、關於offsetX,clientX,pageX,scrollX的區別   offsetX表示點擊點到所點擊物體左邊距的距離;   clientX表示點擊點到瀏覽器左邊的距離,該點擊點會隨著滾動條的移

菜鳥程序員大師神人 四個等級寫出代碼的區別.

python 程序 lte and odin mat env math odi # !/usr/bin/env python# -*- coding: utf-8 -*-# 據說係菜鳥,程序員,大師,神人 四個等級寫出代碼的區別...import math as m#for

java基本類型(數值範圍):浮點的底層表示定義float計算快一些

方法 -1 att ieee754 符號位 無法 字符類 數值計算 小數 Java八種基本類型: 六種數字類型(四個整數型,兩個浮點型), 一種字符類型, 一種布爾型。 詳細例如以下 1、整數:包含int,short,byte,long