Default values for CMAKE_FIND_LIBRARY_PREFIXES/CMAKE_FIND_LIBRARY_SUFFIXES

后端 未结 2 691
梦毁少年i
梦毁少年i 2021-01-19 02:06

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 se

相关标签:
2条回答
  • 2021-01-19 02:13

    so i'll answer this question myself again as i need more space than the comment allows.

    The "something obvious" i've missed is that i accessed those values before invocation of "project(Foo)", and at that stage CMAKE_FIND_LIBRARY_PREFIXES and CMAKE_FIND_LIBRARY_SUFFIXES are not initialized yet. good to know in any case!

    I was checking conditions on whether the main project could be built at all, and that involved checking if the cmake version is new enough and should be downloaded&built before anything further. on the other side, by cmake convention, you need to specify which minimum version you need before you issue any project commands. you see the deadlock there? so if i needed to build a newer cmake version on-the-fly, OpenSSL should be included if possible. this was detected using find_package(OpenSSL), but that in turn accessed the un-initialized CMAKE_FIND_LIBRARY_PREFIXES and everything broke.

    0 讨论(0)
  • 2021-01-19 02:25

    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.

    0 讨论(0)
提交回复
热议问题