Broken module FindSDL_sound.cmake
In my projet I can't build project with sdl_sound library linked.
project(testproject)
cmake_minimum_required(VERSION 3.0.0)
find_package(SDL 1.2.15 REQUIRED)
find_package(SDL_sound 1.0.3 REQUIRED)
find_package(Qt4 4.8.4 COMPONENTS QtCore QtGui REQUIRED)
include(${QT_USE_FILE})
include_directories(${SDL_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR})
add_definitions(${QT_DEFINITIONS})
include_directories(${QT_INCLUDES} ${CMAKE_BINARY_DIR})
# sources
set(SRC_LIST
main.cpp
)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
add_executable(testproject ${SRC_LIST})
set_target_properties(testproject PROPERTIES AUTOMOC ON)
target_link_libraries(testproject ${SDL_LIBRARY} ${SDL_SOUND_LIBRARIES} ${LDADD_LIBS} ${QT_LIBRARIES})
Trying to build and failed...
[100%] Linking CXX executable testproject
/usr/bin/cmake -E cmake_link_script CMakeFiles/testproject.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/testproject.dir/main.cpp.o CMakeFiles/testproject.dir/testproject_automoc.cpp.o -o testproject -rdynamic -Wl,-Bstatic -lSDLmain -Wl,-Bdynamic -lSDL -lpthread -l /usr/lib64/qt4/libQtGui.so /usr/lib64/qt4/libQtCore.so -Wl,-rpath,/usr/lib64/qt4
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -l/usr/lib64/qt4/libQtGui.so
I use cmake-3.5.2 but in master branch of yours git-repository module have the same content except some insignificant changes. I think module FindSDL_sound.cmake is broken, just waste quotes and invalid order of 'set' commands.
My trivial patch of module:
--- FindSDL_sound.orig.cmake 2016-04-15 17:41:21.000000000 +0400
+++ FindSDL_sound.cmake 2016-10-28 14:58:33.878662662 +0400
@@ -378,11 +378,10 @@
endif()
endif()
+ set(SDL_SOUND_LIBRARIES ${SDL_SOUND_EXTRAS} ${SDL_SOUND_LIBRARIES_TMP} CACHE INTERNAL "SDL_sound and dependent libraries")
else()
- set(SDL_SOUND_LIBRARIES "${SDL_SOUND_EXTRAS} ${SDL_SOUND_LIBRARY}" CACHE INTERNAL "SDL_sound and dependent libraries")
+ set(SDL_SOUND_LIBRARIES ${SDL_SOUND_EXTRAS} ${SDL_SOUND_LIBRARY} CACHE INTERNAL "SDL_sound and dependent libraries")
endif()
-
- set(SDL_SOUND_LIBRARIES "${SDL_SOUND_EXTRAS} ${SDL_SOUND_LIBRARIES_TMP}" CACHE INTERNAL "SDL_sound and dependent libraries")
endif()
if(SDL_SOUND_INCLUDE_DIR AND EXISTS "${SDL_SOUND_INCLUDE_DIR}/SDL_sound.h")
With this changes no problem:
[100%] Linking CXX executable testproject
/usr/bin/cmake -E cmake_link_script CMakeFiles/testproject.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/testproject.dir/main.cpp.o CMakeFiles/testproject.dir/testproject_automoc.cpp.o -o testproject -rdynamic -Wl,-Bstatic -lSDLmain -Wl,-Bdynamic -lSDL -lpthread -lSDL_sound /usr/lib64/qt4/libQtGui.so /usr/lib64/qt4/libQtCore.so -Wl,-rpath,/usr/lib64/qt4
Test project: testproject.tar.gz
Patch: FindSDL_sound_fix.patch
P.S. Sorry bad english.