C++ CMake将单头文件添加到项目中

C++ CMake将单头文件添加到项目中,c++,cmake,header,header-only,C++,Cmake,Header,Header Only,我特别想将stb_image_write.h添加到我的项目中,但在使用CMake编译时,我遇到了“多定义”错误 我将stb_image_write.h包含到一个名为“screen.h”的头文件中,包括以下内容: #include <SDL2/SDL.h> #include <vector> #include "float3.h" #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb_image_write.h" #in

我特别想将stb_image_write.h添加到我的项目中,但在使用CMake编译时,我遇到了“多定义”错误

我将stb_image_write.h包含到一个名为“screen.h”的头文件中,包括以下内容:

#include <SDL2/SDL.h>
#include <vector>
#include "float3.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
#include "screen.h"
这是我的名片:

cmake_minimum_required(VERSION 3.8)
project(YAPT)

find_package(SDL2 REQUIRED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lSDL")
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
set(CMAKE_CXX_FLAGS "-fopenmp")
include_directories(SYSTEM ${OpenMP_INCLUDE_PATH})
include_directories("${PROJECT_BINARY_DIR}")
link_directories("${PROJECT_BINARY_DIR}")

file(GLOB SOURCE_FILES "src/*.cpp")
file(GLOB HEADER_FILES  "src/*.h")

add_executable(YAPT ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(YAPT SDL2main SDL2)

文件位置与CMakeLists.txt位于同一目录中,但我也在/src文件夹中尝试过,但没有成功。

我猜如果您使用
#define STB_IMAGE_WRITE_IMPLEMENTATION
,您应该将其包含在cpp文件中。这让我省去了大量的头痛。非常感谢。如果您使用
\define STB\u IMAGE\u WRITE\u IMPLEMENTATION
,我猜您打算将其包含在cpp文件中。这让我省去了大量的头痛。非常感谢你。