From b3d6555cdb4c86748c61e9e0447e7285a00f8f17 Mon Sep 17 00:00:00 2001 From: frsama <108132842+frsama@users.noreply.github.com> Date: Thu, 14 Jul 2022 22:47:42 +0800 Subject: [PATCH 1/2] Create stb_image_write.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 创建.cpp文件 先宏定义STB_IMAGE_WRITE_IMPLEMENTATION, 再include头文件stb_image_write.h 这样做是因为stb_image_write将API和源码整合在了一个.h文件里,于是.h文件就同时包含了API声明和API定义。 这么做的原因可能是出于方便管理,一个.h文件总比一个.h文件加一个.cpp文件或.so文件更方便一些。 但是整合在一起后,我们又不希望每个include该头文件的其它文件每次都重新定义一遍API,所以就加了一个宏变量去限制它, 只有定义了该宏变量的文件,才会对API进行定义,其它文件只有API的声明部分。 通过此方法,最终实现了API声明和定义整合在一起,同时限制了重复定义的问题。 --- stbiw/stb_image_write.cpp | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 stbiw/stb_image_write.cpp diff --git a/stbiw/stb_image_write.cpp b/stbiw/stb_image_write.cpp new file mode 100644 index 0000000..f25fa1b --- /dev/null +++ b/stbiw/stb_image_write.cpp @@ -0,0 +1,2 @@ +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include From 0dd5fc72c8e57a93374795b872080c3da23de539 Mon Sep 17 00:00:00 2001 From: frsama <108132842+frsama@users.noreply.github.com> Date: Thu, 14 Jul 2022 22:55:43 +0800 Subject: [PATCH 2/2] Update CMakeLists.txt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用add_library是用来生成stbiw静态库的。 使用target_include_directories指定了stbiw库关联了当前目录(即/stbiw),且使用了public关键字,这将会传递给所有与stbiw库关联的文件,这些被关联的文件也会到/stbiw目录中去寻找可能需要的头文件。 --- stbiw/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stbiw/CMakeLists.txt b/stbiw/CMakeLists.txt index b56b853..ad253ce 100644 --- a/stbiw/CMakeLists.txt +++ b/stbiw/CMakeLists.txt @@ -1 +1,3 @@ message(FATAL_ERROR "请修改 stbiw/CMakeLists.txt!要求生成一个名为 stbiw 的库") +add_library(stbiw STATIC stb_image_write.cpp) +target_include_directories(stbiw PUBLIC .)