cmakeprefixplatformdefaults

Default values for CMAKE_FIND_LIBRARY_PREFIXES/CMAKE_FIND_LIBRARY_SUFFIXES


i guess i'm missing something very obvious here, but it seems to me that the cmake variables CMAKE_FIND_LIBRARY_PREFIXES/CMAKE_FIND_LIBRARY_SUFFIXES are not set to any "decent" default value depending on the current system/settings! i've checked the cmake docs and google, but there seems nothing about it really.

for example, a simple CMakeLists.txt essentially calling find_package(OpenSSL REQUIRED) will break unless you set the variables in your main file or directly invoke cmake -DCMAKE_FIND_LIBRARY_PREFIXES=lib -DCMAKE_FIND_LIBRARY_SUFFIXES=.so .. (on ubuntu w openssl/libssl-dev installed) on the other hand, the default values PREFIX/SUFFIX for targets are initialized "correctly" for each platform, even considering BUILD_SHARED_LIBS etc. why not for find_library?

does anyone know why/what the suggested (users) behaviour should be?


Solution

  • cmake variables CMAKE_FIND_LIBRARY_PREFIXES/CMAKE_FIND_LIBRARY_SUFFIXES are not set to any "decent" default value

    Why do you think so? For instance:

    cmake_minimum_required(VERSION 3.1)
    project(Foo)
    
    message("prefix: ${CMAKE_FIND_LIBRARY_PREFIXES}")
    message("suffix: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
    

    Linux (Ubuntu):

    prefix: lib
    suffix: .so;.a
    

    Mac:

    prefix: lib
    suffix: .dylib;.so;.a
    

    Windows (Visual Studio):

    prefix:
    suffix: .lib
    

    calling find_package(OpenSSL REQUIRED) will break unless you set the variables in your main file

    Just tested, works fine for me. Ubuntu 14.04. CMake 2.8.12.2 and CMake 3.1.0-rc2.