2010-09-18 17 views
13

W CMake nie mogę wypisać mojej biblioteki w bibliotece ../out/library, tylko w bibliotece. Kiedy robię ścieżkę ../out/library, mówi mi, że nie może znaleźć biblioteki, tak jakby chciał ją połączyć.Niestandardowy katalog wyjściowy biblioteki CMake

add_library(../out/JE3D ../source/CDeviceLayerSDL.cpp) 

Jest więcej plików, tylko oszczędzam miejsce. Kiedy to robię, pojawia się ten błąd.

Łączenie CXX biblioteki statyczne lib ../ out/JE3D.a /usr/bin/ar: lib ../ out/JE3D.a: Nie ma takiego pliku lub katalogu make [2]: * [lib ../ out/JE3D.a] Błąd 1 make [1]: * [CMakeFiles /../ out/JE3D.dir/all] Błąd 2 marka: *** [all] Błąd 2

+0

potrzebuje więcej informacji. Pomagają fragmenty z twojego CMakeLists.txt i cut & past z komunikatu o błędzie. –

+0

W porządku, dodałem więcej informacji. – Jookia

Odpowiedz

25

Właściwość target określa katalog, w którym zostaną utworzone pliki docelowe biblioteki.

set_target_properties(JE3D PROPERTIES 
     LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library) 

Jeśli wszystkie biblioteki są w jednym katalogu, uważam, że wygodniej jest ustawić zmienną CMAKE_LIBRARY_OUTPUT_DIRECTORY, który jest używany do inicjacji właściwość LIBRARY_OUTPUT_DIRECTORY podczas tworzenia cel.

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library) 

Edit: Sprawdź komentarze jeśli cel jest biblioteka statyczna

+1

Powodem, dla którego nie można po prostu użyć komponentów ścieżki w nazwie biblioteki, jest to, że program CMake upraszcza tę nazwę w prosty sposób, aby uzyskać nazwę biblioteki. Na twoim hoście używa wzoru 'lib $ {FILE} .a', który nie działa przy próbie użycia ścieżki. –

+0

Ach, rozumiem! – Jookia

+21

LIBRARY_OUTPUT_DIRECTORY nie działa dla mnie. Zgodnie z dokumentacją ta właściwość kontroluje katalog wyjściowy dla bibliotek współdzielonych. Biblioteki statyczne są kontrolowane przez właściwość ARCHIVE_OUTPUT_DIRECTORY. – Jarlaxle

Powiązane problemy