Как удобно заставить CMAKE использовать определенный файл статической библиотеки?

В настоящее время у меня есть сторонняя библиотека A с открытым исходным кодом, установленная в \ usr \ local. Теперь я хочу поэкспериментировать с некоторыми изменениями кода в этой библиотеке, но я хочу сделать этот тест в локальной папке, чтобы он не влиял на системную библиотеку. Давайте назовем локальную сборку A ‘.

У меня есть исполняемый файл B, который использует библиотеку A в качестве статической библиотеки. В CMakelists.txt он использовал find_pacakge (A), чтобы найти тот, который установлен в \ usr \ local. Какой самый простой способ сделать ссылку на A ‘в локальной папке?

Я понял, что если я УСТАНАВЛИВАЮ A ‘в локальную папку (или любую другую папку, отличную от usr \ local), мы можем заставить CMAKE найти пакет в этой папке, используя HINTS. Тем не менее, я надеюсь, что есть лучший способ даже без установки. После
all, A и A ‘используют одинаковые заголовочные файлы и просто расположены в разных местах. Поэтому я предполагаю, что include_directories не нужно менять. Но я не знаю, как связать библиотеку с указанным файлом в указанной папке вместо системной папки по умолчанию, найденной в find_package.

Я действительно новичок в Cmake, надеюсь, я прояснил ситуацию. большое спасибо

0

Решение

1) Обычно вы берете все, что не включено здесь, и lib там, также в Modern CMake вы можете использовать target_include_directory() так что include и библиотека «связаны», то есть вы получаете все с одним find_package() вызов.
сравни: https://cmake.org/cmake/help/latest/command/target_include_directories.html

2) Посмотрите на CMAKE_PREFIX_PATH это правильный способ изменить путь поиска по умолчанию, если вы хотите найти A ‘вместо A>
сравни: https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html

3) если вы хотите использовать каталог сборки A ‘, то проект CMake A’ должен использовать «export ()», чтобы вы могли использовать его непосредственно из buildir.
примечание: немногие проекты поддерживают его, и правильный способ — сначала установить (в локальную папку), а затем использовать.
сравни: https://cmake.org/cmake/help/latest/command/export.html

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]