【发布时间】:2020-09-20 21:22:41
【问题描述】:
我对如何静态包含 SDL2 的源代码感到困惑。我正在尝试这样做以使我正在开发的库更便携。
当我将其设置为可执行文件时,该库已正常编译,但当我将其更改为库时,它不会包含该库。
目前,当我尝试将我的库包含在另一个项目中时,它会显示 “无法打开包含文件:'SDL2/SDL.h':没有这样的文件或目录”。所以它让我认为错误的原因是包含目录没有与静态库一起导出。
我的文件系统:
include
--Header Files
src
--Source Files
extern
--SDL2
build
这是导致错误的文件示例:
#include <iostream>
#include <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" PUBLIC "${CMAKE_SOURCE_DIR}/extern/SDL2/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"
)
【问题讨论】:
-
请显示构建命令的完整详细输出。