2015-02-19 15 views

Antwort

18

hinzuzufügen wäre

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 

Die moderne CMake-Version, die nicht die -I and -L Flags zu jedem Compiler Aufruf fügt wäre importierte Bibliotheken Der einfachste Weg, dies zu tun zu verwenden:

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 

Wenn die Einstellung INTERFACE_INCLUDE_DIRECTORIES den Pfad nicht hinzufügt, können Sie in älteren Versionen von CMake auch target_include_directories(bar PUBLIC /path/to/include) verwenden. Dies ist jedoch no longer works mit CMake 3.6 oder neuer.

+0

Dieser Fehler mit CMake 3.6: CMake-Fehler bei ... snip .../CMakeLists.txt: 8 (target_include_directories): Kann keine Include-Verzeichnisse für importierte Ziel "myBar" angeben. – nodakai

+1

In der Tat habe ich meine Antwort aktualisiert und es funktioniert jetzt für mich mit CMake 3.8 – ar31

+0

'link_directories (

)', ist genau das, was Sie suchen. – parasrish

Verwandte Themen