LINUX.ORG.RU

cmake предусмотреть доступную библиотеку статическую или динамическую

 


0

1

Я не знаю - будет доступна статическая или динамическая библиотека. Как указать именно на ту библиотеку, которая будет обнаружена?

Т.е. учесть или такой вариант

target_link_libraries(${PROJECT} jsoncpp_static ...

или такой

target_link_libraries(${PROJECT} jsoncpp_lib ...


Считай что всегда доступна динамическая и линкуйся с ней. Недетерминированность и самовольность сборки в любом виде всегда зло.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Недетерминированность и самовольность сборки в любом виде всегда зло.

+1

Pavval ★★★★★
()

не знаю именно на счет jsoncpp, но вобще у cmake есть штука в духе foo::bar. например Boost::json. еще, если все, что нужно указал в find_package, то он выставляет переменную, например ${Boost_LIBRARIES}, то есть можно так

set(Boost_USE_STATIC_LIBS   ON) # for static libraries, if needed
find_package(Boost COMPONENTS program_options REQUIRED)
target_link_libraries( ${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES} )

config файлы многих проектов делают и то и другое.

zerhud
()
Последнее исправление: zerhud (всего исправлений: 1)

Смотри поиск и дефайн jsoncpp_static, там рядом должен быть алиас. Это если не херня для сборки на локалхосте написана. Иначе - проверяй, что найдено, а что нет - if (TARGET ...)

cloun1901
()
Ответ на: комментарий от slovazap

Она и так «недетерминированная». С твоим подходом можно только сборку для локалхоста родить.

cloun1901
()
Ответ на: комментарий от zerhud

но вобще у cmake есть штука в духе foo::bar

Boost_USE_STATIC_LIBS

К чему ты это написал? Boost_USE_STATIC_LIBS - особенность конкретного find модуля. В jsoncpp подобного с вероятностью 99% нет. К тому же, зафорсить динлибы ты даже с этим не сможешь.

cloun1901
()
Ответ на: комментарий от cloun1901

Вероятность? У меня не стоит cppjson, так что я не могу посмотреть, а обычно так и делаю, смотрю файл и точно знаю есть там такая возможность или нет. А это просто пример, куда смотреть, что искать.

zerhud
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.