ключевое слово PRIVATE на PUBLIC и обратно видеть явную разницу. В чём она будет проявляться? Где её увидеть? В логах сборки может где-нибудь или в рантайме это как-то потом проявляется или хотя бы ошибку какую-то получить. Ну что бы увидеть разницу.
это вроде касается сборок, когда разным таргетам нужны разные либы или что-то такое. Это модификатор для cmake сугубо. Почитай в доках
Создайте проект libA -> libB -> exe И линкуйте всё сначала private, а потом public В exe попробуйте использовать символы из libA
Используются успешно, потому что основной задачей, как было озвучено в чате подключения таким образом библиотек является управление зависимостями транзитивно, то есть не важно как будет подключено — через PRIVATE или PUBLIC, все символы всех библиотек будут доступны в exe потому что на завершающем этапе они будут всей толпой прилинкованы.
вроде нет, не будут. libA будет не доступна, потому что она используется только для сборки linB
add_library(LIBA liba.cpp) add_library(LIBB libb.cpp) add_library(LIBC libc.cpp) target_link_libraries(LIBC PUBLIC LIBA PRIVATE LIBB ) add_executable(main main.cpp) target_link_libraries(main LIBC)
/usr/bin/c++ -rdynamic CMakeFiles/main.dir/main.cpp.o -o main libLIBC.a libLIBA.a libLIBB.a
Просто надо взять динамические либы. Чтобы все символы разрешались на этапе линковки каждой библиотеки, а не этапе линковки целевого исполняемого файла.
Обсуждают сегодня