1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-11 09:03:36 +02:00

Fix CMake/wxWidgets link issue

This corrects linking of the wxWidgets libraries when there's multiple
copies and the desired one is later in the search path.  This can affect
any non-Windows system that doesn't have it's wxWidgets in "standard"
libraries (like our wxWidgets builds on the Mac).

The wrong wxWidgets libraries can be picked up by the linker if other
"-L" arguments appear before the wxWidgets specific on.  This can happen
if you have something like Homebrew installed and CMake finds one of the
libraries (like libogg) installed.  It will put a "-L/usr/local/lib" in
the linker arguments before the "-L/usr/local/x86_64" wxWidgets flag,
and if there happens to be wxWidgets libs in /usr/local/lib, the linker
will pull the wxWidgets libs from /usr/local/lib...not what was wanted.
This commit is contained in:
Leland Lucius
2020-02-24 13:45:16 -06:00
parent 87034a0a67
commit 3545097fe9
2 changed files with 10 additions and 0 deletions

View File

@@ -944,6 +944,7 @@ else()
endif()
# Check that all libraries are present, as wx-config does not check it
set(_wx_libraries "")
set(_wx_lib_missing "")
foreach(_wx_lib_ ${wxWidgets_LIBRARIES})
if("${_wx_lib_}" MATCHES "^-l(.*)")
@@ -952,10 +953,16 @@ foreach(_wx_lib_ ${wxWidgets_LIBRARIES})
find_library(_wx_lib_found NAMES ${_wx_lib_name} HINTS ${wxWidgets_LIBRARY_DIRS})
if(_wx_lib_found STREQUAL _wx_lib_found-NOTFOUND)
list(APPEND _wx_lib_missing ${_wx_lib_name})
else()
list(APPEND _wx_libraries ${_wx_lib_found})
endif()
unset(_wx_lib_found CACHE)
else()
list(APPEND _wx_libraries ${_wx_lib_})
endif()
endforeach()
set(wxWidgets_LIBRARIES ${_wx_libraries})
unset(_wx_libraries)
if (_wx_lib_missing)
string(REPLACE ";" " " _wx_lib_missing "${_wx_lib_missing}")