Technology sharing

C】Getting coepi cum CMake

2024-07-12

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

CMake est instrumentum crucis-platform construendi systematis generationis quae generare files (ut Makefiles vel Visual Studiorum imaginum) pro applicationibus componendis et ligandis.

install CMake

Windows

  • Potest ex CMake rutrum Download ac niteremur in Fenestra versione CMake.
  • Post institutionem perfectam, fac CMake addere ad VIAM systematis ambitus variabilis.

Linux

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

uno fonte file project

Non opus est ut documenta fontalia praebeant et descriptionem in CMake adumbrationem praebeant. Haec descriptio CMake utens fit, et documenta perfecta in https://cmake.org/cmake/help/latest/ inveniri potest.

para

Creare simplex C++ documentum continens tabulas sequentes:

  • CMakeLists.txt
  • main.cpp

Volumus scribere main.cpp source code in unum fasciculum exsecutabile:

#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

generare

Aperi mandatum promptum, naviga in directorium propositi, et curr;

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

Vel utendum, cum idem facit;

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

In configuratione project iam estbuild generatae in presul. Nunc exsecutabile ordinare possumus:

cmake --build .
  • 1

switch generantis

CMake est systema generantis constructum quod uno CMakeLists uti potest.txt ad incepta configurare pro diversis instrumentis in diversis suggestis. Describas in CMakeLists.txt actiones fabricandi systema tuum currendum est ad configurandum et codicem tuum componendum. Ex his mandatis CMake instructiones respondentes generabit ad systema aedificandi delecti (Unix Makefile, Ninja, Studio Visual, etc.).

  • Visual Studio Compiler (MSVC): Apta systematibus Fenestra, generantibus communiter sunt NMake Makefiles or *Visual Studio.
  • MinGW aut MSYS2: Apta ratio pro Fenestra, uti potes MinGW Makefiles.
  • Unix Makefiles: Unix-modi systemata ut Linux vel macOS.
cmake -Bbuild -G "NMake Makefiles"
  • 1

Multiplex exsecutabile ac bibliotheca incepta

para

Directorium structura haec est:

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

opus scribere CMakeLists.txt lima ut has fasciculos componas et contra bibliothecam ligaveris.

# 指定 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

generare

Aperi mandatum promptum seu terminale et navigare ad radicem indicis:

cd Test
  • 1

creo build presul et navigare ad eam;

mkdir build
cd build
  • 1
  • 2

Curre CMake configuratione imperium:

cmake ..
  • 1

Curre aedificare imperium;

cmake --build .
  • 1