1cmake_minimum_required(VERSION 3.8...3.25) 2 3project(fmt-link CXX) 4 5set(BUILD_SHARED_LIBS OFF) 6set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE) 7set(CMAKE_CXX_VISIBILITY_PRESET "hidden") 8 9# Broken LTO on GCC 4 10if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5) 11 set(BROKEN_LTO ON) 12endif () 13 14if (NOT BROKEN_LTO AND CMAKE_VERSION VERSION_GREATER "3.8") 15 # CMake 3.9+ 16 include(CheckIPOSupported) 17 check_ipo_supported(RESULT HAVE_IPO) 18 if (HAVE_IPO) 19 set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) 20 endif () 21endif () 22 23add_subdirectory(../.. fmt) 24set_property(TARGET fmt PROPERTY POSITION_INDEPENDENT_CODE ON) 25 26add_library(library-test SHARED library.cc) 27target_link_libraries(library-test PRIVATE fmt::fmt) 28 29add_executable(exe-test main.cc) 30target_link_libraries(exe-test PRIVATE library-test) 31