Teknologian jakaminen

【C】CMaken käytön aloittaminen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

CMake on monialustainen koontijärjestelmän luontityökalu, joka voi luoda koontitiedostoja (kuten Makefiles- tai Visual Studio -projektitiedostoja) sovellusten kääntämistä ja linkittämistä varten.

Asenna CMake

Windows

  • Voidaan saada osoitteesta CMake virallinen verkkosivusto Lataa ja asenna CMaken Windows-versio.
  • Kun asennus on valmis, muista lisätä CMake järjestelmän PATH-ympäristömuuttujaan.

Linux

sudo apt-get update
sudo apt-get install cmake
  • 1
  • 2

yhden lähdetiedoston projekti

Meidän on toimitettava lähdetiedostot ja annettava projektin kokoonpanokuvaus CMakelle. Tämä kuvaus on tehty käyttämällä CMakea, ja täydellinen dokumentaatio löytyy osoitteesta https://cmake.org/cmake/help/latest/.

Valmistella

Luo yksinkertainen C++-projekti, joka sisältää seuraavat tiedostot:

  • CMakeLists.txt
  • main.cpp

Haluamme koota main.cpp-lähdekoodin yhdeksi suoritettavaksi tiedostoksi:

#include<iostream>
int main(){
    std::cout<<"Hello world"<<std::endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5

CMakeLists.txt

# 设置CMake所需的最低版本。如果使用的CMake版本低于该版本,则会发出致命错误
cmake_minimum_required(VERSION 3.10)

# 声明了项目的名称(Test)和支持的编程语言(CXX代表C++)
project(Test CXX)

# 指示CMake创建一个新目标:可执行文件main。这个可执行文件是通过编译和链接源文件main生成的。CMake将为编译器使用默认设置,并自动选择生成工具
add_executable(main main.cpp)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Tuottaa

Avaa komentokehote, siirry projektihakemistoon ja suorita:

mkdir build
cd build
cmake ..
  • 1
  • 2
  • 3

Tai käytä samalla vaikutuksella:

# 该命令是跨平台的,使用了-H和-B为CLI选项。-H表示当前目录中搜索根CMakeLists.txt文件。-Bbuild告诉CMake在一个名为build的目录中生成所有的文件
cmake -H. -Bbuild
  • 1
  • 2

Projektin määritykset ovat jo käytössäbuild luotu hakemistossa. Voimme nyt kääntää suoritettavan tiedoston:

cmake --build .
  • 1

kytkingeneraattori

CMake on koontijärjestelmägeneraattori, joka voi käyttää yhtä CMakeLists.txt-tiedostoa konfiguroidakseen projekteja eri työkalusarjoille eri alustoilla. Kuvaat tiedostossa CMakeLists.txt toiminnot, jotka koontijärjestelmän on suoritettava koodin määrittämiseksi ja kääntämiseksi. Näiden ohjeiden perusteella CMake luo vastaavat ohjeet valitulle koontijärjestelmälle (Unix Makefile, Ninja, Visual Studio jne.).

  • Visual Studio Compiler (MSVC): Sopii Windows-järjestelmiin, yleisesti käytetyt generaattorit ovat NMake Makefiles taiVisual Studio.
  • MinGW tai MSYS2: Sopii Windows-järjestelmään, voit käyttää MinGW Makefiles.
  • Unix Makefiles: Unix-tyyppisille järjestelmille, kuten Linux tai macOS.
cmake -Bbuild -G "NMake Makefiles"
  • 1

Useita suoritettavia ja kirjastoprojekteja

Valmistella

Hakemistorakenne on seuraava:

MyProject/
├── include/
│   └── say.hpp
├── src/
│   ├── main.cpp
│   └── say.cpp
├── lib/
└── bin/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
# main.cpp

#include"say.hpp"
int main() {
    say();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
# say.cpp

#include<iostream>
#include"say.hpp"
void say(){
    std::cout<<"Hello world!"<<std::endl;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
# say.hpp

#pragma once
void say();
  • 1
  • 2
  • 3
  • 4

CMakeLists.txt

meidän täytyy kirjoittaa CMakeLists.txt tiedostot näiden tiedostojen kokoamiseksi ja linkittämiseksi kirjastoon.

# 指定 CMake 的最低版本要求
cmake_minimum_required(VERSION 3.10)

# 定义项目名称和版本
project(test VERSION 1.0.0)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加 include 目录到编译器的头文件搜索路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

# 设置库和可执行文件输出路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)

# 创建静态库目标
add_library(message
    STATIC # 若动态库则参数为SHARED
    ${CMAKE_CURRENT_SOURCE_DIR}/src/say.cpp
)

# 添加可执行文件
add_executable(test
    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
)

# 链接静态/动态库到可执行文件
target_link_libraries(test say)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Tuottaa

Avaa komentokehote tai pääte ja siirry projektin juurihakemistoon:

cd Test
  • 1

luoda build hakemistoon ja navigoi siihen:

mkdir build
cd build
  • 1
  • 2

Suorita CMake-määrityskomento:

cmake ..
  • 1

Suorita build-komento:

cmake --build .
  • 1