from cmake make

Real_Biter_Oliver發表於2019-01-25
//從一段程式開始hello.cpp
#include <iostream>
using namespace std;
int main(int argc,char ** argv)
{
    cout<<"Hello!"<<endl;
    return 0;
}
//然後,用g++編譯一下,生成可執行檔案
g++ hello.cpp
//啦啦啦,當前目錄多了一個a.out檔案,終端輸入ls,發現其顏色與眾不同,so,go on
./a.out
//列印出Hello!
//cmake騷操作一波
//cmake工程中,用cmake生成一個makefile檔案,then,make一下,根據makefile內容,編譯該工程
//在hello.cpp的基礎上,在相同目錄下建一個CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
//聲名要求的cmake最低版本
project(Hello)
//宣告一個cmake工程
add_executable(hello hello.cpp)
//新增一個可執行程式add_executable(程式名 原始碼檔案)

//儲存,在終端鍵入
mkdir build
//將cmake生成的中間檔案與我們的程式碼檔案分開放
cd build
cmake ..
make
//超級有趣的庫
//建一個庫檔案libHello.cpp
#include <iostream>
using namespace std;
void printHello()
{
    cout<<"Hello!"<<endl;
}

//然後,在CMakeLists.txt里加一句
add_library(hello libHello.cpp)
//會得到靜態庫libhello.a
//或者,可以
add_library(hello_shared SHARED libHello.cpp)
//得到共享庫libhello_shared.so

//對於庫的使用者,拿到標頭檔案和庫檔案就可以呼叫庫了
//寫標頭檔案libHello.h
#ifndef LIBHELLO_H_
#define LIBHELLO_H_
void printHello();
#endif

//ok,寫程式呼叫庫把
//useHello.cpp
#include "libHello.h"
int main(int argc,char ** argv)
{
    printHello();
    return 0;
}

//最後,在CMakeLists.txt中新增可執行程式的生成命令
add_executable(useHello useHello.cpp)
target_link_libraries(useHello hello_shared)

//然後就是cmake,make doublekill

 

相關文章