2017-05-19 3 views
1

Gibt es eine Möglichkeit in CMake, das Quellverzeichnis der Datei CMakeLists.txt zu finden, in der ein Ziel definiert wurde?Verzeichnis suchen, in dem Ziel definiert ist

somethign wie:

if (TARGET Foo) 
    message("Library Foo was alread built in ${LOCATION_OF_FOOS_CMAKE}") 
else() 
    add_library(Foo ...) 
endif() 

Edit:
Leider mein cmake-Skripte auf einer Standard-Ubuntu 14.04 Installation arbeiten. So bin ich darauf beschränkt Cmake 2.8

Antwort

3

Sie Zieleigenschaft verwenden können SOURCE_DIR (hinzugefügt mit CMake 3.7):

get_target_property(FOO_SOURCE_DIR Foo SOURCE_DIR) 

Für ältere Versionen von CMake Sie zum Beispiel überschreiben add_library() und Ihre eigene SOURCE_DIR Zieleigenschaft definieren:

function(add_library _target) 
    _add_library(${_target} ${ARGN}) 
    set_target_properties(${_target} PROPERTIES SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") 
endfunction(add_library) 
+0

Ihnen sehr danken. Leider müssen meine cmake-Skripte mit cmake 2.8 (ubuntu14.04) kompatibel sein. – MikeMB

+0

@MikeMB Ok. Zu meiner Antwort wurde ein Legacy-Code hinzugefügt. – Florian

Verwandte Themen