Я пытаюсь понять, как работает cmake.
Я работаю на Mac с менеджером пакетов homebrew. Я установил libpng с помощью homebrew. Путь к заголовку include находится в / usr / local / include, который также является стандартным путем к заголовку include для c ++, g ++, clang.
Если я сделаю, например, что-то вроде этого:
...
find_package(PNG)
target_link_libraries(mytarget PNG::PNG)
...
заголовки автоматически обнаруживаются компилятором, даже если я выбрасываю find_package (PNG). Cmake просто знает, что png.h, на который я ссылаюсь в моем файле cpp, находится в /usr/local/include.
Но по какой-то причине, если я собираю свою собственную библиотеку, а затем устанавливаю ее в / usr / local / lib и / usr / local / include, а затем пишу код find_library, find_path, чтобы найти заголовки и библиотеки этого моего нового свежего печеного lib, он не находит мой заголовок mylib.h, на который также есть ссылка в моем файле cpp. Ошибка в том, что mylib.h не найден.
Как cmake обрабатывает хорошо осведомленные пакеты, такие как PNG, Eigen, Boost и т. Д., Так что он автоматически находит заголовки?