Pregunta

Estoy usando para administrar mis compilaciones multiplataforma, y ​​tengo todo resuelto excepto este problema.lo puse RUNTIME_OUTPUT_DIRECTORY a un bin/ Directorio donde tengo almacenados los archivos de datos.En Linux, esto funciona bien.En Windows, los ejecutables se colocan en el Debug/Release subdirectorio según el tipo de compilación.¿Hay alguna manera de conseguir ¿copiar el ejecutable al directorio adecuado o (mejor aún) dejar de usar estos subdirectorios por completo?

¿Fue útil?

Solución

He estado usando el hack propiedad prefix bien informado por Ogapo durante años. Funciona.

Pero a partir de la versión 2.8 CMake, no hay apoyo oficial para evitar los subdirectorios LANZAMIENTO / depuración en Windows.

Utilice cualquiera de las variables globales CMAKE_<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>, o las propiedades <ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION> por la diana, así:

SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")

Otros consejos

No estoy seguro de si estos directorios son intencionales o un insecto, pero con el riesgo de incompatibilidad adelante se podría añadir:

if (MSVC_IDE)
    # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows
    set_target_properties (${NAME} PROPERTIES PREFIX "../")
endif()

esto ha estado trabajando para mí

He encontrado algunas buenas discusiones sobre este tema:

http://www.cmake.org/pipermail/cmake /2008-April/021355.html

http://www.vtk.org/Bug/bug_view_advanced_page.php ? bug_id = 8366

¿Sería posible utilizar el obsoleto EXECUTABLE_OUTPUT_PATH en lugar de RUNTIME_OUTPUT_DIRECTORY ? No estoy seguro de lo que la funcionalidad ha cambiado entre el 2, pero podría valer la pena probar.

Algunas variables cmake han construido versiones específicas.

CMAKE_C_FLAGS 
    the compiler flags for compiling C sources. Note you can also specify switches with ADD_DEFINITIONS(). 
CMAKE_C_FLAGS_DEBUG 
    compiler flags for compiling a debug build from C sources. 
CMAKE_C_FLAGS_RELEASE 
    compiler flags for compiling a release build from C sources. 
CMAKE_C_FLAGS_RELWITHDEBINFO 
    compiler flags for compiling a release build with debug flags from C sources. 

No he verificado existen estos VARs, pero tal vez el establecimiento de RUNTIME_OUTPUT_DIRECTORY_DEBUG && RUNTIME_OUTPUT_DIRECTORY_RELEASE a la misma cosa podría funcionar.

Hasta el momento, la mejor respuesta que he encontrado es escribir simplemente CMake instalar comandos para cada uno de mis objetivos y archivos de datos, y establecer el depurador MSVC a quedarse sin el directorio de instalación. Esto tiene la ventaja añadida de utilizar CPack para crear instaladores.

Para mí un mundial:

set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")

hizo el trabajo, por lo que no tiene que configurarlo para cada biblioteca (CMake 2.8.4)

Necesita cambiar la ubicación de construcción de sus proyectos de Visual Studio.Vaya a Propiedades del proyecto y en la pestaña Compilar especifique la 'Ruta de salida de compilación' para que esté donde desee.

Nota

No sé qué tan relevante es esto porque no conozco CMake.

Puede utilizar el siguiente token en eventos de compilación de Visual Studio:

$(TargetPath)

Esta será la ruta a la ubicación en la que se creó su proyecto, por lo que, dependiendo de la configuración de su proyecto, será la carpeta Depurar o Lanzar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top