gpt4 book ai didi

c++ - 如何在Project CMake中正确包含SDL2源代码

转载 作者:行者123 更新时间:2023-12-02 10:27:12 26 4
gpt4 key购买 nike

我对如何静态包含SDL2的源代码感到困惑。我正在尝试这样做,以使我正在开发的库更加可移植。
当前,当我尝试将我的库包含在另一个项目中时,它指示“无法打开包含文件:'SDL2 / SDL.h':没有这样的文件或目录”
我的文件系统:

include
--Header Files
src
--Source Files
extern
--SDL2
build
这是导致错误的文件的示例:
#include <iostream>
#include <SDL2/SDL.h> //Error

using namespace std;

/* The code */
这是我的主要CMakeLists.txt的示例:
cmake_minimum_required(VERSION 3.7)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

project(MyProject VERSION 1.0.0)

set(SDL2_SOURCE_DIR “${CMAKE_SOURCE_DIR}/extern/SDL2”)
add_subdirectory(extern/SDL2)
add_subdirectory(src)
这是我的src CMakeLists.txt的示例:
set(PROJECT_NAME MyProject)

file(GLOB HEADER_FILES "${CMAKE_SOURCE_DIR}/include/*.h")
file(GLOB SOURCES "*.cpp")

add_library(${PROJECT_NAME} ${SOURCES} ${HEADER_FILES})

target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_SOURCE_DIR}/include")

target_link_libraries(${PROJECT_NAME} PRIVATE SDL2main SDL2-static)

set_target_properties( ${PROJECT_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin"
)

最佳答案

add_subdirectory()会将子目录作为cmake项目处理(处理SDL提供的CMakeLists.txt)。如果阅读该CMakeLists.txt,则会看到它添加了相对于SDL2_SOURCE_DIR的包含目录,默认情况下为空。
我将尝试将SDL2_SOURCE_DIR设置为$ {CMAKE_CURRENT_SOURCE_DIR} / extern / SDL2,以使路径绝对。像那样,SDL include dirs在您的项目中的任何地方都有效。
您也可以使用include_directories()指令手动添加正确的包含。

关于c++ - 如何在Project CMake中正确包含SDL2源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63877274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com