1set(libinc 2 libconfig.h) 3 4set(libsrc 5 grammar.h 6 parsectx.h 7 scanctx.h 8 scanner.h 9 win32/stdint.h 10 strbuf.h 11 strvec.h 12 util.h 13 wincompat.h 14 grammar.c 15 libconfig.c 16 scanctx.c 17 scanner.c 18 strbuf.c 19 strvec.c 20 util.c 21 wincompat.c) 22 23set(libinc_cpp 24 libconfig.h++ 25 libconfig.hh) 26 27set(libsrc_cpp 28 ${libsrc} 29 libconfigcpp.cc) 30 31if(MSVC) 32 set(libname "libconfig") 33else() 34 set(libname "config") 35endif() 36 37add_library(${libname} ${libsrc} ${libinc}) 38add_library(${libname}++ ${libsrc_cpp} ${libinc_cpp}) 39 40set_target_properties(${libname} 41 PROPERTIES LINKER_LANGUAGE C 42 SOVERSION "${libconfig_VERSION_MAJOR}" 43 VERSION "${libconfig_VERSION}" 44 DEFINE_SYMBOL LIBCONFIG_EXPORTS 45 PUBLIC_HEADER "${libinc}") 46set_target_properties(${libname}++ 47 PROPERTIES LINKER_LANGUAGE CXX 48 SOVERSION "${libconfig_VERSION_MAJOR}" 49 DEFINE_SYMBOL LIBCONFIGXX_EXPORTS 50 VERSION "${libconfig_VERSION}" 51 PUBLIC_HEADER "${libinc_cpp}") 52 53#check_symbol_exists(uselocale "locale.h" HAVE_USELOCALE) 54#check_symbol_exists(newlocale "locale.h" HAVE_NEWLOCALE) 55#check_symbol_exists(freelocale "locale.h" HAVE_FREELOCALE) 56 57if(BUILD_SHARED_LIBS) 58 target_compile_definitions(${libname}++ PRIVATE LIBCONFIG_STATIC) 59else() 60 target_compile_definitions(${libname} PUBLIC LIBCONFIG_STATIC) 61 target_compile_definitions(${libname}++ PUBLIC LIBCONFIGXX_STATIC) 62endif() 63 64if(HAVE_USELOCALE) 65target_compile_definitions(${libname} 66 PRIVATE "HAVE_USELOCALE") 67endif() 68 69if(HAVE_NEWLOCALE) 70target_compile_definitions(${libname} 71 PRIVATE "HAVE_NEWLOCALE") 72endif() 73 74if(HAVE_FREELOCALE) 75target_compile_definitions(${libname} 76 PRIVATE "HAVE_FREELOCALE") 77endif() 78 79if(MSVC) 80 target_compile_definitions(${libname} 81 PRIVATE 82 _CRT_SECURE_NO_DEPRECATE 83 YY_NO_UNISTD_H 84 YY_USE_CONST ) 85 86 target_compile_definitions(${libname}++ 87 PRIVATE 88 _CRT_SECURE_NO_DEPRECATE 89 YY_NO_UNISTD_H 90 YY_USE_CONST ) 91endif() 92 93if(WIN32) 94 target_link_libraries(${libname} shlwapi) 95 target_link_libraries(${libname}++ shlwapi) 96endif() 97 98target_include_directories(${libname} 99 PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" 100 ) 101 102target_include_directories(${libname}++ 103 PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" 104 ) 105 106install(TARGETS ${libname} 107 EXPORT libconfigTargets 108 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 109 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 110 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 111 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 112) 113 114install(TARGETS ${libname}++ 115 EXPORT libconfig++Targets 116 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 117 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 118 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 119 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 120) 121 122 123include(CMakePackageConfigHelpers) 124foreach(target_name libconfig libconfig++) 125 write_basic_package_version_file("${target_name}ConfigVersion.cmake" 126 VERSION ${PACKAGE_VERSION} 127 COMPATIBILITY SameMajorVersion 128 ) 129 130 install(EXPORT ${target_name}Targets 131 FILE "${target_name}Config.cmake" 132 NAMESPACE libconfig:: 133 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libconfig 134 ) 135 136 install(FILES 137 "${CMAKE_CURRENT_BINARY_DIR}/${target_name}ConfigVersion.cmake" 138 DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/libconfig" 139 ) 140endforeach() 141