CMake 实用语法教程

一、前言 最近一段时间在用 c++ 写一个项目,因此学了学 cmake。说实话,cmake 奇怪的语法在一开始实在容易让人望而生畏。但是上手使用的话就会发现平常会用到的不过是其中的一小部分,并且通常有规律可循。掌握这一部分的内容,大概率就可以组织起一个规模较大的项目了。因此本文也就旨在讲述 cmake 的这一部分的内容。 当然,阅读本教程之前需要了解代码编译、链接的相关知识。关于编译相关的命令,可见我的文章系统编程之命令行编译。 本文的所有代码保存在仓库 practical-cmake 中,欢迎 star :)。 cmake 下载方式如下(apt) sudo apt-get install build-essential sudo apt-get install cmake 二、第一步 说到第一个程序,那当然要请出经典的 hello, world 了。 #include <stdio.h> int main() { printf("hello, world\n"); return 0; } 在本文中我会首先给出使用 gcc 编译的命令,之后再使用 cmake 做同样的事情。那么对于第一步,我们的 gcc 命令如下 gcc main.cpp -o main 当然很简单,而对于 cmake 也类似。要使用 cmake,我们需要添加一个配置文件 CMakeLists.txt,其中包含要执行的操作。本小节中,CMakeLists.txt 的内容是 cmake_minimum_required(VERSION 3.10) project(main) add_executable(main main.cpp) 其中第一条指定了 cmake 版本要求,第二条指定了当前项目名,而第三条 add_executable 则实现了和 gcc 命令相同的操作:指定源文件 main.cpp 和输出文件名 main,生成一个可执行文件。...

九月 3, 2023 · 5 分钟 · 905 字 · Wokron

Pybind11 实现 Python 与 C++ 混合编程

一、前言 最近在尝试写一个简单的游戏引擎,我决定用 python 作为脚本,所以了解了一些混合编程的知识。 (1)python api 从原理来说,根据文档所述,python 提供了 Python.h 头文件,能够将 c 或 c++ 代码编译成可供 python 引入的动态链接库。该库中定义的可供 python 调用的函数中所有的入参都是名为 PyObject 结构体的指针。在代码中可以通过一系列函数对 PyObject 进行操作。 举一个简单的例子,我们希望 python 调用一个由 c 编写的简单的加法函数 int add(int a, int b) { return a + b; } 我们期望在 python 中这样调用 # test_mymodule.py from mymodule import add a = 10 b = 20 c = add(a, b) assert c == 30 那么我们首先需要对该函数进行包装,包装函数 _add 的参数和返回值都应该是 PyObject *。在包装函数中调用了 PyArg_ParseTuple 将传入的参数转换为 int 类型,调用原本的 add 函数得到返回值,之后又通过 PyLong_FromLong 将 int 转换为 PyObject。...

八月 17, 2023 · 3 分钟 · 631 字 · Wokron