Запретить экспорт всех функций в CMake

Я не понимаю почему, но у меня при сборке вываливаются все функции наружу, т.е. к ним можно получить доступ...

В CMakeLists явно задал чтобы по умолчанию не было экспорта:

set_target_properties(${PROJECT_NAME}   PROPERTIES
                                        C_STANDARD 99
                                        C_STANDARD_REQUIRED ON
                                        C_EXTENSIONS OFF
                                        C_FLAGS "${C_FLAGS} -Wall -Werror -Wextra -pedantic"
                                        C_VISIBILITY_PRESET hidden
                                        VISIBILITY_INLINES_HIDDEN 1)

Но стоило мне вызвать gendef, так у меня глаза на лоб полезли:

$ gendef ./libchc.dll
 * [./libchc.dll] Found PE+ image
;
; Definition file of libchc.dll
; Automatic generated by gendef
; written by Kai Tietz 2008
;
LIBRARY "libchc.dll"
EXPORTS
libchc_url_free
libchc_url_new
libchc_url_part_fragment_free
libchc_url_part_fragment_write
libchc_url_part_free
libchc_url_part_host_free
libchc_url_part_host_write
libchc_url_part_new
libchc_url_part_path_free
libchc_url_part_path_write
libchc_url_part_port_free
libchc_url_part_port_write
libchc_url_part_query_free
libchc_url_part_query_write
libchc_url_part_scheme_free
libchc_url_part_scheme_write
libchc_url_part_user_data_free
libchc_url_part_user_data_write

Но самое интересное, что при вызове ninja chc --verbose, в терминале я вижу следующую строку сборки:

$ ninja clean && ninja chc --verbose
[1/1] Cleaning all built files...
Cleaning... 5 files.
[1/4] D:\msys64\mingw64\bin\gcc.exe -DHAS_CONFIG_H -Dchc_EXPORTS -I. -g -fvisibility=hidden   -std=c99 -MD -MT CMakeFiles/chc.dir/lib/libsocket.c.obj -MF CMakeFiles\chc.dir\lib\libsocket.c.obj.d -o CMakeFiles/chc.dir/lib/libsocket.c.obj   -c ../lib/libsocket.c
[2/4] D:\msys64\mingw64\bin\gcc.exe -DHAS_CONFIG_H -Dchc_EXPORTS -I. -g -fvisibility=hidden   -std=c99 -MD -MT CMakeFiles/chc.dir/lib/liburl.c.obj -MF CMakeFiles\chc.dir\lib\liburl.c.obj.d -o CMakeFiles/chc.dir/lib/liburl.c.obj   -c ../lib/liburl.c
[3/4] D:\msys64\mingw64\bin\gcc.exe -DHAS_CONFIG_H -Dchc_EXPORTS -I. -g -fvisibility=hidden   -std=c99 -MD -MT CMakeFiles/chc.dir/lib/liburl_part.c.obj -MF CMakeFiles\chc.dir\lib\liburl_part.c.obj.d -o CMakeFiles/chc.dir/lib/liburl_part.c.obj   -c ../lib/liburl_part.c
[4/4] cmd.exe /C "cd . && D:\msys64\mingw64\bin\gcc.exe  -g   -shared -o libchc.dll -Wl,--out-implib,libchc.dll.a -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/chc.dir/lib/libsocket.c.obj CMakeFiles/chc.dir/lib/liburl.c.obj CMakeFiles/chc.dir/lib/liburl_part.c.obj  -lws2_32  -static  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

Прошу обратить внимание, на присутствие флага -fvisibility=hidden.

Что мне нужно сделать что бы все функции не экспортировались, а только те которые будут помечены на экспорт?


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