set(libinc libconfig.h) set(libsrc grammar.h parsectx.h scanctx.h scanner.h win32/stdint.h strbuf.h strvec.h util.h wincompat.h grammar.c libconfig.c scanctx.c scanner.c strbuf.c strvec.c util.c wincompat.c) set(libinc_cpp libconfig.h++ libconfig.hh) set(libsrc_cpp ${libsrc} libconfigcpp.cc) if(MSVC) set(libname "libconfig") else() set(libname "config") endif() add_library(${libname} ${libsrc} ${libinc}) add_library(${libname}++ ${libsrc_cpp} ${libinc_cpp}) set_target_properties(${libname} PROPERTIES LINKER_LANGUAGE C SOVERSION "${libconfig_VERSION_MAJOR}" VERSION "${libconfig_VERSION}" DEFINE_SYMBOL LIBCONFIG_EXPORTS PUBLIC_HEADER "${libinc}") set_target_properties(${libname}++ PROPERTIES LINKER_LANGUAGE CXX SOVERSION "${libconfig_VERSION_MAJOR}" DEFINE_SYMBOL LIBCONFIGXX_EXPORTS VERSION "${libconfig_VERSION}" PUBLIC_HEADER "${libinc_cpp}") #check_symbol_exists(uselocale "locale.h" HAVE_USELOCALE) #check_symbol_exists(newlocale "locale.h" HAVE_NEWLOCALE) #check_symbol_exists(freelocale "locale.h" HAVE_FREELOCALE) if(BUILD_SHARED_LIBS) target_compile_definitions(${libname}++ PRIVATE LIBCONFIG_STATIC) else() target_compile_definitions(${libname} PUBLIC LIBCONFIG_STATIC) target_compile_definitions(${libname}++ PUBLIC LIBCONFIGXX_STATIC) endif() if(HAVE_USELOCALE) target_compile_definitions(${libname} PRIVATE "HAVE_USELOCALE") endif() if(HAVE_NEWLOCALE) target_compile_definitions(${libname} PRIVATE "HAVE_NEWLOCALE") endif() if(HAVE_FREELOCALE) target_compile_definitions(${libname} PRIVATE "HAVE_FREELOCALE") endif() if(MSVC) target_compile_definitions(${libname} PRIVATE _CRT_SECURE_NO_DEPRECATE YY_NO_UNISTD_H YY_USE_CONST ) target_compile_definitions(${libname}++ PRIVATE _CRT_SECURE_NO_DEPRECATE YY_NO_UNISTD_H YY_USE_CONST ) endif() if(WIN32) target_link_libraries(${libname} shlwapi) target_link_libraries(${libname}++ shlwapi) endif() target_include_directories(${libname} PUBLIC "$" ) target_include_directories(${libname}++ PUBLIC "$" ) install(TARGETS ${libname} EXPORT libconfigTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install(TARGETS ${libname}++ EXPORT libconfig++Targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) include(CMakePackageConfigHelpers) foreach(target_name libconfig libconfig++) write_basic_package_version_file("${target_name}ConfigVersion.cmake" VERSION ${PACKAGE_VERSION} COMPATIBILITY SameMajorVersion ) install(EXPORT ${target_name}Targets FILE "${target_name}Config.cmake" NAMESPACE libconfig:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libconfig ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target_name}ConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/libconfig" ) endforeach()