diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f0f118e..b01e18a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,6 +76,7 @@ endif() target_include_directories(${PROJECT_NAME} PUBLIC $ + $ $) # cpp-httplib is vendored (single header) and fully hidden behind the library # (pimpl), so it is only needed when building the library itself. @@ -83,12 +84,29 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIB_LIST}) include(GNUInstallDirs) +include(GenerateExportHeader) + +generate_export_header(${PROJECT_NAME} + BASE_NAME TGBOT + EXPORT_MACRO_NAME TGBOT_API + NO_EXPORT_MACRO_NAME TGBOT_NO_EXPORT + DEPRECATED_MACRO_NAME TGBOT_DEPRECATED + STATIC_DEFINE TGBOT_STATIC_DEFINE + INCLUDE_GUARD_NAME TGBOT_EXPORT_H + EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/tgbot/export.h) + +if(NOT BUILD_SHARED_LIBS) + target_compile_definitions(${PROJECT_NAME} PUBLIC TGBOT_STATIC_DEFINE) +endif() + install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/tgbot/export.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tgbot) install(EXPORT ${PROJECT_NAME}-targets NAMESPACE ${PROJECT_NAME}:: FILE ${PROJECT_NAME}Config.cmake @@ -115,7 +133,3 @@ if(BUILD_DOCUMENTATION) VERBATIM) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc/html/ TYPE DOC) endif() - -if(BUILD_SHARED_LIBS) - target_compile_definitions(${PROJECT_NAME} PUBLIC TGBOT_DLL) -endif() diff --git a/include/tgbot/export.h b/include/tgbot/export.h deleted file mode 100644 index 1bfb5035..00000000 --- a/include/tgbot/export.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef TGBOT_EXPORT_H -#define TGBOT_EXPORT_H - -#ifndef TGBOT_API - #ifdef TGBOT_DLL - #if defined _WIN32 || defined __CYGWIN__ - #define TGBOT_HELPER_DLL_EXPORT __declspec(dllexport) - #define TGBOT_HELPER_DLL_IMPORT __declspec(dllimport) - #else - #if __GNUC__ >= 4 - #define TGBOT_HELPER_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define TGBOT_HELPER_DLL_IMPORT __attribute__ ((visibility ("default"))) - #else - #define TGBOT_HELPER_DLL_EXPORT - #define TGBOT_HELPER_DLL_IMPORT - #endif - #endif - #ifdef TgBot_EXPORTS - #define TGBOT_API TGBOT_HELPER_DLL_EXPORT - #else - #define TGBOT_API TGBOT_HELPER_DLL_IMPORT - #endif - #else - #define TGBOT_API - #endif -#endif - -#endif //TGBOT_EXPORT_H