我正在跟随这个问题。然而我的cmake
遇到了错误:
-- Configuring done
CMake Error at CMakeLists.txt:18 (add_executable):
Target "main" links to item "-L/usr/lib/x86_64-linux-gnu -lSDL2 " which has
leading or trailing whitespace. This is now an error according to policy
CMP0004.
-- Generating done
“cmake”列表有什么问题?
我认为轻微的“cmake”版本差异不会导致这样的错误。
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)
project (main)
add_executable(main
main.cpp
)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(main ${SDL2_LIBRARIES})
// main.cpp
int main()
{
return 0;
}
更新:
/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake
的内容为:
# sdl2 cmake project-config input for ./configure scripts
set(prefix "/usr")
set(exec_prefix "${prefix}")
set(libdir "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_PREFIX "/usr")
set(SDL2_EXEC_PREFIX "/usr")
set(SDL2_LIBDIR "${prefix}/lib/x86_64-linux-gnu")
set(SDL2_INCLUDE_DIRS "${prefix}/include/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 ")
sdl2-config.cmake
文件(可能是libsdl2-dev
包的一部分等)。展示此文件的内容。如果其内容看起来像 https://github.com/xerpi/SDL-Vita/blob/master/sdl2-config.cmake.in(*SD2_LIBRARIES*变量的内容被封装在双引号中),那么这个错误就可以理解了。快速修复可以是删除这些双引号。 - Tsyvarevset(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2")
,现在一切都好了。非常感谢你。我只是想知道,为什么会出现这个问题。这是CMake
或SDL2
的一个错误吗? - ar2015