Как добавить экспортный флаг для динамической библиотеки?
У меня есть единый конфигурационный файл для динамических библиотек:
#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 способа:
- set_target_properties(${target} PROPERTIES DEFINE_SYMBOL MY_FLAGS)
- target_compile_definitions(${target} PRIVATE MY_FLAGS)
Есть ли различия между ними? Я правильно понимаю, что есть я выберу 2 способ, то флаг target_EXPORTS всё равно будет создан (определён в препроцессоре), даже если я использую единый флаг для всех целей?