[Bug 230070] devel/cmake: check_library_exists fails to find libX11/XOpenIM
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Dec 19 17:17:37 GMT 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230070
Adriaan de Groot <adridg at freebsd.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |adridg at freebsd.org
--- Comment #3 from Adriaan de Groot <adridg at freebsd.org> ---
This is a misunderstanding what CheckLibraryExists does. It takes **one**
LOCATION and checks for the given function in that location. You can pass it a
list, but in CMake's internals -- see CheckLibraryExists.cmake -- it then gets
passed on to try_compile as a string; this loses all the list-ness of LOCATION.
You can see this for yourself by running cmake --debug-trycompile and then
grepping through the resulting CMakeFiles/ directory.
The correct way (well, **one** working way) to look for XOpenIM is to *first*
find the library, then check for the function:
```
find_library(_x11forreal X11 HINTS ${X11_LIB_SEARCH_PATH})
if (_x11forreal)
check_library_exists(${_x11forreal} XOpenIM "" XIM2_FOUND)
if(${XIM2_FOUND})
MESSAGE("YES XOpenIM is found (2)")
else()
MESSAGE("NO XOpenIM is NOT found (2)")
endif()
endif()
```
This just leaves out the LOCATION and uses the direct path to the library.
Note, also, that X11_LIB_SEARCH_PATH is an internal variable, not documented,
that contains the list of places FindX11.cmake is going to look: it's not a
computed value. So another way to do this is to use the X11 library variable
that **is** documented:
```
check_library_exists(${X11_X11_LIB} XOpenIM "" XIM_FOUND)
```
I'll grant you that the documentation of check_library_exists could be a lot
better.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the kde-freebsd
mailing list