Como en la respuesta de Oleg, creo que la variable correcta para establecer es CMAKE_RUNTIME_OUTPUT_DIRECTORY . Usamos lo siguiente en nuestra raíz CMakeLists.txt:
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)
También puede especificar los directorios de salida por destino:
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"
)
En ambos casos se puede añadir _[CONFIG]
al nombre de variable / propiedad para hacer el directorio de salida se aplica a una configuración específica (los valores estándar de configuración son DEBUG
, RELEASE
, MINSIZEREL
y RELWITHDEBINFO
).
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
, considerando que el comandoinstall(TARGETS <target_name>)
todavía se queja de "dado que no hay DESTINO DE TIEMPO DE EJECUCIÓN para el objetivo ejecutable"? Esta variable supuestamente proporciona un valor predeterminado, por lo tanto, elinstall
comando no debería quejarse de la ausencia de aRUNTIME DESTINATION
.