如何使用CMAKE在项目构建过程中构建SDL2
How to build SDL2 during project build using cmake?
我想让自己成为图形的跨平台设置。我正在尝试使用CMAKE构建SDL2。这是我当前的cmakelists.txt:
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
set(PROJECT_NAME "OpenGLZero")
set(SDL2_DIR "external/SDL2-2.0.9")
set(GLEW_SOURCE_DIR "external/glew-2.1.0")
set(GLM_SOURCE_DIR "external/glm-0.9.9.3")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
find_package(OpenGL REQUIRED)
add_subdirectory(${SDL2_DIR})
include_directories(${GLEW_SOURCE_DIR}/include
${GLM_SOURCE_DIR}
${SDL2_DIR}/include)
# building glew as a static library
add_library(glew STATIC
${GLEW_SOURCE_DIR}/src/glew.c
${GLEW_SOURCE_DIR}/include)
add_definitions(-DGLEW_STATIC)
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} SDL2main SDL2 ${OPENGL_LIBRARY} glew)
尽管我正在链接库,但无法在Windows上找到SDL2.dll
文件(buildexternalSDL2-2.0.9Release
中)。使用${SDL2_LIBRARIES}
链接在这里不起作用,可能是因为我不使用包括所有路径的find_package
。我不使用find_package
,因为我想从头开始构建SDL2,而不是使用Windows和Mac的二进制文件,并使用APT将SDL2安装在Linux中。我该怎么做才能允许在不提供二进制文件的情况下找到SDL2 LIB的通用方法?
当使用add_subdirectory
方法构建其他库时,首选与库 target 链接,而不是 file 。。。>
如果您查看了sdl2的cmakelists.txt,那么您会发现 static> static 库目标的名称是SDL2-static
,因此您需要与它链接而不是SDL2
。
您会使用find_package()
方法(带有预安装的二进制文件),静态SDL2库目标的名称为 SDL2::SDL2-static
(前缀XXX::
表示目标是 em>导入 One)。
相关文章:
- 是否删除在对象构造过程中创建的对象
- 如何在鼠标挂钩过程中检测拖动
- clang 插件:在编译过程中修改 AST
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- Adafruit 羽毛RFM69HCW在使用过程中会冻结,需要硬重置
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- VS:在构建/exe中包含资源文件
- cmake在构建过程中使用另一个工具检测标志
- 在构建过程中捕获所有编译器调用和命令行参数
- 如何在节点GYP构建过程中包括Tesseract库
- 如何使用CMAKE在项目构建过程中构建SDL2
- 在Docker构建过程中安装C 软件包
- 在构建过程中更改Boost库的路径
- 应用程序停滞在构建/运行过程中
- 在构建过程中捕获特定基础成员的异常
- 在构建过程中构建第三方库
- Ros安装在构建过程中卡住
- 在一行中定义多个变量,这能为构建过程提供任何优化吗?