c++ - 如何使用 Ninja 在 C++ 中编译 "Hello World"?

标签 c++ makefile cmake compilation ninja

我是 Ninja 的新手。还是不知道怎么用。

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

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

我正在使用 Linux Ubuntu。

我已经安装了 CMake:apt install cmake

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

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

我尝试运行 ninja 但我收到关于 rules.ninja 的错误:

ninja: error: build.ninja:30: loading 'rules.ninja': No such file or directory

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

最佳答案

假设您根本没有 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)

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

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

mkdir build
cd build

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

cmake -GNinja ..

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

ninja

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

关于c++ - 如何使用 Ninja 在 C++ 中编译 "Hello World"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989884/

相关文章:

c++ - 为什么 sleep 功能会禁用我的互斥体

c++ - 预先知道大小时初始化 std::map

c++ - 在 Qt Creator 中缓慢构建 Symbian Qt 项目。耗时20多分钟

linux - 在 makefile 中搜索子目录并更新路径变量

c++ - 使用 CMake 制作跨平台库?

cmake - 在 cmake 中处理操作系统/平台特定代码

c++ - Qt永久线程

c++ - 为什么 strlen() 也适用于字符数组?

linux - binutils 为 readelf 报错

windows - MinGW 与 MSVC 下的 Windows 导出/导入符号; CMake WINDOWS_EXPORT_ALL_SYMBOLS 被忽略