Last active
October 20, 2022 10:14
-
-
Save scivision/bccb726e951a6e0ec40e77789745e07a to your computer and use it in GitHub Desktop.
CMake find_library force static search
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# CMake find_library() defaults to shared library before static. | |
# this order can be programatically set as below. | |
cmake_minimum_required(VERSION 3.1) | |
project(demo LANGUAGES C) | |
# arbitrary library to demo search | |
if(MSVC) | |
set(libname msvcrt) | |
else() | |
set(libname z) | |
endif() | |
message(STATUS "default CMake library suffix search order: ${CMAKE_FIND_LIBRARY_SUFFIXES}") | |
# MinGW: .dll.a;.a;.lib | |
# Visual Studio: .lib | |
# macOS: .tbd;.dylib;.so;.a | |
# Linux: .so;.a | |
message(STATUS "CMake shared library suffix: ${CMAKE_SHARED_LIBRARY_SUFFIX}") | |
message(STATUS "CMake shared module suffix: ${CMAKE_SHARED_MODULE_SUFFIX}") | |
message(STATUS "CMake static library suffix: ${CMAKE_STATIC_LIBRARY_SUFFIX}") | |
# set(CMAKE_FIND_DEBUG_MODE on) | |
find_library(lib_default NAMES ${libname} | |
NO_CACHE | |
) | |
if(NOT lib_default) | |
message(FATAL_ERROR "find_library() failed to find ${libname}") | |
endif() | |
message(STATUS "find_library() found ${lib_default}") | |
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX}) | |
message(STATUS "searching for static library: ${CMAKE_FIND_LIBRARY_SUFFIXES}") | |
find_library(lib_static NAMES ${libname} | |
NO_CACHE) | |
if(NOT lib_static) | |
message(FATAL_ERROR "find_library() failed to find ${libname} with static suffix") | |
endif() | |
message(STATUS "find_library() found ${lib_static}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment