2017-08-17 17 views
5

Tôi đang theo dõi this question. Tuy nhiên, cmake khuôn mặt của mình có lỗi:cmake: khoảng trắng đầu hoặc cuối (chính sách 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 

Có gì sai với danh sách cmake?

Tôi không nghĩ rằng chênh lệch phiên bản nhỏ cmake dẫn đến lỗi như vậy.

# 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; 
} 

Cập nhật:

Nội dung của /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 ") 
+2

Điều này có vẻ như là một vấn đề trong tệp cấu hình gói SDL2 được cung cấp (nhưng tôi không sử dụng SDL2, vì vậy tôi không thể nhận xét thêm). – Angew

+1

Nên có tệp «sdl2-config.cmake' được cài đặt SDL2 của bạn (nó có thể là một phần của gói' libsdl2-dev' hoặc hơn). Hiển thị nội dung của tệp này. Nếu nó trông như thế này: https://github.com/xerpi/SDL-Vita/blob/master/sdl2-config.cmake.in (nội dung của biến * SD2_LIBRARIES * được kèm theo dấu ngoặc kép), thì lỗi có thể hiểu được . Sửa chữa nhanh có thể loại bỏ các dấu ngoặc kép này. – Tsyvarev

+0

@Tsyvarev, đã cập nhật. – ar2015

Trả lời

0

Giải pháp là để chỉnh sửa các tập tin sdl2-config.cmake.

Bạn có thể tìm thấy tập tin này thông qua lệnh:

apt-file search sdl2-config 

Trong Ubuntu Ubuntu 16.04 nó nằm ở

/usr/lib/x86_64-linux-gnu/cmake/SDL2/sdl2-config.cmake 

Trong tập tin nguồn,

# 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 

Trong dòng cuối cùng, có một không gian bổ sung cần được xóa

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

Sau đó, sự cố đã được khắc phục cho tôi.

Các vấn đề liên quan