使用CMake add_subdirectory()外置构建SDL_image遇阻求助
解决SDL_image通过add_subdirectory构建时的in-tree build错误
你遇到的问题本质是cmake命令的执行位置错误:你在根源码目录(包含lib和build的目录)下运行cmake . -G "MinGW Makefiles",导致全局变量CMAKE_SOURCE_DIR(根CMakeLists.txt所在目录)与CMAKE_BINARY_DIR(cmake执行目录)完全相同,触发了SDL_image中检查这两个全局变量是否相等的判断逻辑——哪怕你给add_subdirectory指定了子目录的构建路径,全局变量的状态不会改变。
正确操作步骤:
- 进入
build目录:cd build - 在
build目录内执行cmake命令,将根源码目录作为源路径传入:cmake .. -G "MinGW Makefiles" - 主CMakeLists.txt可保持如下内容(也可指定SDL_image的构建文件输出路径):
cmake_minimum_required(VERSION 3.13) project(test) # 可选:将SDL_image的构建文件输出到build/sdl_image目录 add_subdirectory(lib/sdl_image sdl_image)
这样操作后,CMAKE_SOURCE_DIR指向根源码目录,CMAKE_BINARY_DIR指向build目录,二者不相等,SDL_image的错误判断不会触发,构建可正常进行。
内容的提问来源于stack exchange,提问作者Jaan
相关产品推荐
相关产品推荐

