Мне нужно установить ссылку на стороннюю предварительно созданную общую библиотеку. В Windows это означает связь с Third_party.lib
, а также на Linux/Android, что означает связь с libThird_party.so
. Поэтому в интересах перекрестного platformness, я попытался написать, что, как:Префикс/суффикс библиотеки Cmake
${CMAKE_IMPORT_LIBRARY_PREFIX}Third_party${CMAKE_IMPORT_LIBRARY_SUFFIX}
Который прекрасно работает на Windows, но на Linux/Android, эти переменные являются пустыми. Я понимаю, что у Linux/Android нет библиотек импорта, но тем не менее эти переменные, являющиеся пустыми, на самом деле являются большой неприятностью. И изменение переменных на CMAKE_SHARED_LIBRARY_...
тоже не работает, потому что хотя Linux/Android будет искать lib/.so, как я хочу, Windows будет искать .dll, чего я не хочу.
Похоже, я могу исправить это, заполнив переменные библиотеки импорта (только в Linux) со значениями из переменных разделяемой библиотеки. Но ... это действительно лучший способ? Я не могу быть первым человеком, который справится с этим.
Спасибо. У меня есть следующий вопрос. Некоторые из этих библиотек загружаются и скомпилируются с помощью ExternalProject, что означает, что они не будут существовать до времени сборки. Это вызывает проблему при запуске начальной команды cmake, поскольку она не может связываться с переменными, которые содержат значение NOTFOUND. –
, как правило, у вас будут подкаталоги со своим CMakeLists.txt и их запуск, а также запуск оттуда. Однако реальный мир обычно намного сложнее. Задайте совершенно новый вопрос о StackOverflow с гораздо более подробной информацией :) –