Как добавить экспортный флаг для динамической библиотеки?

У меня есть единый конфигурационный файл для динамических библиотек:

#ifndef CONFIG_HPP
#define CONFIG_HPP

    // if the library is shared
    #if !defined(PROJECT_STATIC)
    
        #if defined(_WIN32) // Windows
    
            // Windows export flag
            #if defined(PROJECT_EXPORTS)
                #define PROJECT_API __declspec(dllexport)    
            #else
                #define PROJECT_API __declspec(dllimport)
            #endif
    
        #else // Linux, FreeBSD, Mac OS X
    
            // GCC 4 has special keywords for showing/hidding symbols,
            // the same keyword is used for both importing and exporting
            #if (__GNUC__ >= 4)
                #define PROJECT_API __attribute__ ((__visibility__ ("default")))
            #else
                #define PROJECT_API
            #endif
    
        #endif
    
    #else

#endif // PROJECT_CONFIG_HPP

Мне нужно определить флаги PROJECT_STATIC и PROJECT_EXPORTS. Я нашёл 2 способа:

  1. set_target_properties(${target} PROPERTIES DEFINE_SYMBOL MY_FLAGS)
  2. target_compile_definitions(${target} PRIVATE MY_FLAGS)

Есть ли различия между ними? Я правильно понимаю, что есть я выберу 2 способ, то флаг target_EXPORTS всё равно будет создан (определён в препроцессоре), даже если я использую единый флаг для всех целей?


Ответы (0 шт):