2017-08-17 18 views
5

私はthis questionに従っています。しかし、エラーと私のcmake顔は:cmake:先頭または末尾の空白(ポリシーCMP0004)

-- 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-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 ") 
+2

これはSDL2で提供されているパッケージ設定ファイルの問題のようです(ただし、私はSDL2を使用しないため、これ以上コメントできません)。 – Angew

+1

SDL2のインストールには 'sdl2-config.cmake'ファイルが含まれている必要があります(これは' libsdl2-dev'パッケージの一部でもかまいません)。このファイルの内容を表示してください。次のように見える場合:https://github.com/xerpi/SDL-Vita/blob/master/sdl2-config.cmake.in(* SD2_LIBRARIES *変数の内容は二重引用符で囲まれています)、エラーが理解できる。速い修正は、これらの二重引用符を削除することです。 – Tsyvarev

+0

@Tsyvarev、更新されました。 – ar2015

答えて

0

です。

あなたはコマンドを使って、このファイルを見つけることができます:UbuntuのUbuntu 16.04

apt-file search sdl2-config 

をそれが最後の行で

/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 ") <---- here 

に位置し、削除する必要がある余分なスペースがあります

BEFORE: set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 ") 
AFTER : set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2") 

次に、問題が解決しました。

関連する問題