1

我特别想将 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"

然后,我将此标头包含到 cpp 文件中,如下所示:

#include "screen.h"

这是我的 CMake:

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 文件夹中尝试过,但没有运气。

4

0 回答 0