Nel mio progetto sono presenti 2 cartelle "inc" e "lib" che hanno rispettivamente intestazioni e librerie statiche. Come faccio a dire cmake di usare queste 2 directory per includere e collegare rispettivamente?Come si aggiunge un percorso di libreria in cmake?
9
A
risposta
18
Il modo più semplice per farlo sarebbe quello di aggiungere
include_directories(${CMAKE_SOURCE_DIR}/inc)
link_directories(${CMAKE_SOURCE_DIR}/lib)
add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # libbar.so is found in ${CMAKE_SOURCE_DIR}/lib
La moderna versione di CMake che non aggiunge i -I and -L
bandiere per ogni chiamata del compilatore potrebbe essere quella di utilizzare le librerie importate:
add_library(bar SHARED IMPORTED) # or STATIC instead of SHARED
set_target_properties(bar PROPERTIES
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/lib/libbar.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include/libbar"
)
set(FOO_SRCS "foo.cpp")
add_executable(foo ${FOO_SRCS})
target_link_libraries(foo bar) # also adds the required include path
Se l'impostazione di INTERFACE_INCLUDE_DIRECTORIES
non aggiunge il percorso, le versioni precedenti di CMake consentono anche di utilizzare target_include_directories(bar PUBLIC /path/to/include)
. Tuttavia, questo no longer works con CMake 3.6 o successivo.
Problemi correlati
- 1. Impostazione del percorso della libreria di arricciatura in cmake
- 2. CMake aggiunge depedency all'obiettivo di installazione
- 3. cmake - find_library - posizione libreria personalizzata
- 4. Come trovare una libreria con cmake?
- 5. Come si aggiunge un percorso di importazione Python in modo permanente?
- 6. Libreria di edifici con cmake
- 7. Come si aggiunge un file come collegamento in una libreria .NET Core?
- 8. Come si aggiunge httplib2 in ansible?
- 9. CMake ha impostato il percorso di ricerca della libreria non riuscito in testCXXCompiler
- 10. Come si aggiunge un carattere a una stringa in OCaml?
- 11. target personalizzato come libreria di destinazione in cmake
- 12. Come si aggiunge una variabile di configurazione al mio script CMake?
- 13. OpenCV come libreria statica (opzioni cmake)
- 14. Come si aggiunge un titolo di sezione in UICollectionView?
- 15. Come si aggiunge un punto di interruzione in Xcode?
- 16. CMake: multipli sottoprogetti utilizzando stesso libreria statica
- 17. Come si aggiunge un progetto a CruiseControl.NET?
- 18. CMake collegamento alla libreria esterna
- 19. Come si aggiunge un elenco a un file in vim?
- 20. CMake obiettivi di costruzione in base alla esistenza della libreria
- 21. Come si specificano i percorsi relativi in CMAKE?
- 22. Come si aggiunge un JToken a un JObject?
- 23. Come si crea un "percorso" in wordpress?
- 24. Come si aggiunge una rotta MVC a un controller specifico?
- 25. Come si concatena la stringa in cmake
- 26. Come si aggiunge un tipo di documento a un XDocument?
- 27. Percorso libreria Ubuntu Linux
- 28. Come si aggiunge testo alternativo in. Galeria?
- 29. facilmente includere intestazioni dalla dipendenza della libreria in cmake
- 30. Come si aggiunge un comando personalizzato indirizzato in WPF?
Si è verificato questo errore con CMake 3.6: errore CMake in ... snip .../CMakeLists.txt: 8 (target_include_directories): Impossibile specificare le directory di inclusione per il target importato "myBar". – nodakai
Infatti, ho aggiornato la mia risposta e ora funziona per me con CMake 3.8 – ar31
'link_directories (