Я попробовал несколько вариантов, чтобы правильно настроить видимость в моей библиотеке.Как:
target_compile_options(MY_LIB PRIVATE "-fvisibility=hidden")
set_target_properties(MY_LIB PROPERTIES C_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1)
set_target_properties(MY_LIB PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN 1)
или
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
И оба не работают.У меня есть определенные функции, которые я хочу выставить, установленные внутри блока
#pragma GCC visibilty push(default)
void thisShouldBeTheOnlyThingVisible(void) {
...
}
#pragma GCC visibilty pop
Но, если я запускаю разные инструменты, такие как objdump или readelf , не толькоЯ вижу все внутренние функции, которые не должны быть перечислены, я также вижу имена файлов и имена не статических переменных.Я бы не возражал в режиме debug , но в release его там не должно быть.
Какой правильный процесс здесь, чтобы получить все, что я хочу скрытькроме этих специальных функций?
Спасибо
W