Podobnie jak w odpowiedzi Olega, uważam, że poprawna zmienna to CMAKE_RUNTIME_OUTPUT_DIRECTORY . W naszym głównym pliku CMakeLists.txt używamy:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Możesz także określić katalogi wyjściowe dla poszczególnych celów:
set_target_properties( targets...
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
W obu przypadkach można dołączyć _[CONFIG]
do nazwy zmiennej / nieruchomość, aby katalog wyjściowy stosuje się do konkretnej konfiguracji (standardowe wartości dla konfiguracji są DEBUG
, RELEASE
, MINSIZEREL
i RELWITHDEBINFO
).
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
, biorąc pod uwagę, że polecenieinstall(TARGETS <target_name>)
wciąż narzeka na „nie podano RUNTIME DESTINATION dla wykonywalnego celu”? Ta zmienna rzekomo podaje wartość domyślną, dlategoinstall
komenda nie powinna narzekać na brak aRUNTIME DESTINATION
.Posługiwać się
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
źródło
Użyj
EXECUTABLE_OUTPUT_PATH
zmiennej CMake, aby ustawić potrzebną ścieżkę. Szczegółowe informacje można znaleźć w dokumentacji online CMake:CMake 2.8.8 Dokumentacja
źródło
Jeśli chodzi o mnie, używam cmake 3.5, poniższe (
set variable
) nie działa:ale to działa (
set set_target_properties
):źródło
źródło
użyj tej konfiguracji linii:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
umieść dowolny projekt CMakeLists.txt.
ten $ {PROJECT_SOURCE_DIR} to twój aktualny katalog źródłowy, w którym znajduje się projekt.
a jeśli zastanowisz się, dlaczego $ {EXECUTABLE_OUTPUT_PATH}
sprawdź ten plik,
CMakeCache.txt
a następnie wyszukaj słowo kluczoweoutput path
,wszystkie zmienne tutaj zdefiniowane, to da pełne wyjaśnienie projektu
setting·
źródło
źródło
Niezależnie od tego, czy zdefiniuję to w głównym pliku CMakeLists.txt, czy w poszczególnych, nadal zakłada się, że chcę wszystkich bibliotek i binów zejść z głównej ścieżki, co jest najmniej użytecznym założeniem ze wszystkich.
źródło
Aby dodać do tego:
Jeśli używasz CMAKE do generowania rozwiązania Visual Studio i chcesz, aby Visual Studio wyświetlał skompilowane pliki w katalogu / bin, odpowiedź Petera musi zostać nieco zmodyfikowana:
źródło