Как удобно заставить CMAKE использовать определенный файл статической библиотеки? - PullRequest
0 голосов
/ 20 сентября 2018

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

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

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

Действительно новичок в Cmake, надеюсь, я прояснил это.Большое спасибо

1 Ответ

0 голосов
/ 20 сентября 2018

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

2) Взгляните на CMAKE_PREFIX_PATH. Это правильный способ изменить путь поиска по умолчанию, если вы хотите найти A 'вместо A> *
cf: https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html

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

...