Я намагаюся отримати систему зшивання платформ, яка працює за допомогою CMake. Тепер програмне забезпечення має кілька залежностей. Я склав їх сам і встановив у своїй системі.
Деякі приклади встановлених файлів:
-- Installing: /usr/local/share/SomeLib/SomeDir/somefile
-- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile
-- Installing: /usr/local/lib/SomeLib/somesharedlibrary
-- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake
-- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake
Тепер CMake має a, find_package()
який відкриває Find*.cmake
файл та шукає бібліотеку в системі та визначає деякі змінні, наприклад, SomeLib_FOUND
etc.
Мій CMakeLists.txt містить щось подібне:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
Перша команда визначає, де CMake здійснює пошук після, Find*.cmake
і я додав каталог, SomeLib
де його FindSomeLib.cmake
можна знайти, тому find_package()
працює як очікувалося.
Але це find_package()
щось дивно, тому що одна з причин існування полягає в тому, щоб відійти від неперехресних платформних жорстких кодованих шляхів.
Як це зазвичай робиться? Чи потрібно скопіювати cmake/
каталог SomeLib
у свій проект і встановити CMAKE_MODULE_PATH
відносно?