如何用 Ninja 编译 C++ 中的“Hello World”?

Yar*_*eli 2 c++ makefile compilation cmake ninja

我是忍者新手。还是不知道怎么用。

我创建了一个简单的hello.cpp文件:

#include <iostream>
int main()
{
        std::cout << "Hello World!" << std::endl;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Linux Ubuntu。

我已经安装了 CMake:apt install cmake

我已经安装了忍者:apt-get install ninja-build

但现在我应该怎么做才能用hello.cppNinja 编译我的文件呢?

我尝试运行ninja,但出现以下错误rules.ninja

ninja: error: build.ninja:30: loading 'rules.ninja': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我不知道如何创建rules.ninja和如何配置它,也不知道我是否错过了更多的东西。

tho*_*s_f 6

CMakeLists.txt这里假设您根本没有文件。要编译该程序,首先需要创建一个CMakeLists.txt文件。CMake 使用此文件来配置项目。

CMakeLists.txt(将其放在与源文件相同的文件夹中):

cmake_minimum_required(VERSION 3.8)
project(my_exe)
set(CMAKE_CXX_STANDARD 14) # Try 11 if your compiler does not support C++14
add_executable(my_exe hello.cpp)
Run Code Online (Sandbox Code Playgroud)

然后,您需要调用 CMake(在终端中,转到包含该文件的文件夹CMakeLists.txt)并稍后构建项目。

首先,您应该创建一个构建目录。这很方便,因为您不想将构建输出与项目文件混合。

mkdir build
cd build
Run Code Online (Sandbox Code Playgroud)

然后,调用 CMake 并告诉它生成 Ninja 构建系统 ( -GNinja),同时告诉它CMakeLists.txt文件所在的位置 ( ..),该文件应该位于build文件夹的正下方:

cmake -GNinja ..
Run Code Online (Sandbox Code Playgroud)

现在,您已准备好构建可执行文件:

ninja
Run Code Online (Sandbox Code Playgroud)

完毕。my_exe您的文件夹中现在应该有一个可执行文件名称build