On 15.06.2014 19:33, Lucas Soltic wrote:
I use a FindSomeLib.cmake script for my project, for which there is a variable
(let's call it LINK_STATIC) to define if one wants to link against
SomeLib statically. The default is to look for dynamic libraries.
The issue is that when first running CMake's configure, the user may have
forgotten to set LINK_STATIC, so the script finds the dynamic version of
SomeLib and set a cache entry for it. Then in CMake's GUI the user realizes he
wants static linking so he sets the LINK_STATIC flag, but at this point
find_library has already cached the result and won't look again for static
version of SomeLib.
This ends up with the user thinking he's using static linking, which is not
what's happening.
I saw in CMake's doc that in order to let find_library search again, I'd need
to clear the library entry it has found. But if I do this at each CMake
configure run, it removes the interest of the cache.
Would anyone know about the preferred way to fix this caching issue?
I would be really grateful :)
Perhaps you could use distinct cache variables for static and shared
libraries.
e.g.
find_library(FOO_STATIC_LIBRARY ...)
find_library(FOO_SHARED_LIBRARY ...)
set(FOO_LIBRARIES "")
if(FOO_LINK_STATIC)
list(APPEND FOO_LIBRARIES ${FOO_STATIC_LIBRARY})
else()
list(APPEND FOO_LIBRARIES ${FOO_SHARED_LIBRARY})
endif()
Nils
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake