Sto cercando di far funzionare un sistema di build multipiattaforma con CMake. Ora il software ha alcune dipendenze. Li ho compilati io stesso e li ho installati sul mio sistema.
Alcuni file di esempio che sono stati installati:
-- 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
Ora CMake ha un file find_package()
che apre un Find*.cmake
file e cerca la libreria sul sistema e definisce alcune variabili come SomeLib_FOUND
ecc.
My CMakeLists.txt contiene qualcosa del genere:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
Il primo comando definisce dove CMake cerca dopo Find*.cmake
e ho aggiunto la directory di SomeLib
dove è FindSomeLib.cmake
possibile trovare, quindi find_package()
funziona come previsto.
Ma questo è un po 'strano perché uno dei motivi per cui find_package()
esiste è quello di allontanarsi da percorsi codificati in modo non multipiattaforma.
Come si fa di solito? Devo copiare la cmake/
directory di SomeLib
nel mio progetto e impostare CMAKE_MODULE_PATH
relativamente?