且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

CMAKE_FIND_LIBRARY_PREFIXES / CMAKE_FIND_LIBRARY_SUFFIXES的默认值

更新时间:2023-02-03 12:38:01


cmake变量CMAKE_FIND_LIBRARY_PREFIXES / CMAKE_FIND_LIBRARY_SUFFIXES未设置为任何适当的默认值


为什么也这样觉得?例如:

  cmake_minimum_required(版本3.1)
项目(Foo)

消息( 前缀:$ {CMAKE_FIND_LIBRARY_PREFIXES})
消息(后缀:$ {CMAKE_FIND_LIBRARY_SUFFIXES})

Linux(Ubuntu):

 前缀:lib 
后缀:.so; .a

Mac:

 前缀:lib 
后缀:.dylib; .so; .a

Windows(Visual Studio):

 前缀:
后缀:.lib




除非您在主文件中设置了变量,否则调用find_package(需要OpenSSL)将中断


刚刚测试过,对我来说很好。 Ubuntu 14.04。 CMake 2.8.12.2和CMake 3.1.0-rc2。


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?

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.