博主博客

由于编写 C/C++ 多数依赖于编译器, 反而忽略了使用命令行进行编译, 因此在这记录使用 g++CMake 进行编译打包的步骤。

g++GNU 开发的 C++ 编译器,是 GCC(GNU Compiler Collection)GNU 编译器套件的组成部分。gccGNUC 编译器。

CMake 是个一个开源的跨平台自动化建构系统,用来管理软体建置的程序,并不依赖于某特定编译器,并可支援多层目录、多个应用程式与多个函式库。

G++

安装: sudo apt-get install build-essential
查看版本: g++ --version

CMake

卸载: sudo apt-get autoremove cmake
安装: sudo apt-get install cmake
查看版本: cmake --version
注:如果已经下载 Android SDK, 直接配置环境变量 /Users/nukix/Library/Android/sdk/cmake/<版本>/bin (根据自己的 SDK 位置进行修改), 即可使用。

非常非常简单的例子

目录树

NukixProject
|
|--build
|--src
|  `--main.cpp
`--CMakeLists.txt

main.cpp

#include<iostream>
using namespace std;

int main()
{
    cout << "hello world!" << endl;
    return 0;
}

CMakeLists.txt

# cmake 最低版本需求
cmake_minimum_required(VERSION 3.10.2)
# 工程名称和版本号
project(nukix_project VERSION 1.0)

# 指定 C++ 的标准
set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_CXX_STANDARD_REQUIRED True) 

# 编译源码生成目标
add_executable(nukix src/main.cpp)

# 导入第三方头文件
# target_include_directories(nukix PUBLIC
#     "/Users/nukix/Library/Java/JavaVirtualMachines/openjdk-18.0.2.1/Contents/Home/include/"
#     "/Users/nukix/Library/Java/JavaVirtualMachines/openjdk-18.0.2.1/Contents/Home/include/darwin/"
#     "/Users/nukix/Library/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/"
#     "/Users/nukix/Library/Android/sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android/"
# ) 

执行命令进行编译

# 在 build 目录下执行命令, 避免生成污染源文件
nukix@nukixdeMacBook-Pro build % cmake .. && make
# 运行生成文件, 这里的名称跟上面配置 编译源码生成目标 的名称一致
nukix@nukixdeMacBook-Pro build % ./nukix