Estoy usando cmake para administrar mis compilaciones multiplataforma, y tengo todo resuelto a excepción de este problema. Configuré RUNTIME_OUTPUT_DIRECTORY
en un directorio bin/
donde tengo almacenados los archivos de datos. En Linux, esto funciona bien. En Windows, los ejecutables se colocan en el subdirectorio Debug
/Release
según el tipo de compilación. ¿Hay alguna forma de obtener cmake para copiar el ejecutable en el directorio correcto, o (aún mejor) dejar de usar estos subdirectorios por completo?cmake RUNTIME_OUTPUT_DIRECTORY en Windows
Respuesta
He estado utilizando el hack de propiedad de prefijo fino reportado por Ogapo durante años. Funciona.
Pero a partir de CMake versión 2.8, hay soporte oficial para evitar los subdirectorios Release/Debug en Windows.
utilizar el globales CMAKE_<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>
variables, o los per-objetivo <ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION>
propiedades, 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}")
No he buscado una solución. Y encontré esta respuesta y, al mismo tiempo, encontré este enlace: https://cmake.org/Bug/view.php?id=9163. Esta respuesta usa exactamente la misma técnica. Creo que esta respuesta es la mejor solución hasta ahora. Funciona muy bien para mí. Gracias. –
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 desuso EXECUTABLE_OUTPUT_PATH en lugar de RUNTIME_OUTPUT_DIRECTORY? No estoy seguro de qué funcionalidad ha cambiado entre los 2, pero podría valer la pena intentarlo.
Necesita cambiar la ubicación de compilación de sus proyectos de estudio visual. 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 como éste es que no sé acerca de CMake.
Usted puede utilizar el siguiente token en Visual Studio crear eventos:
$(TargetPath)
Ésta será la ruta a la ubicación que su proyecto se construye a lo que dependiendo de la configuración del proyecto, esta podrá ser el Carpeta Debug o Release.
Algunas variables de cmake tienen versiones específicas de compilación.
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.
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í
Esto también funciona bien para mí. Para los archivos .lib, use SET_TARGET_PROPERTIES ($ {PROJECT_NAME} PROPERTIES IMPORT_PREFIX "../") – Torleif
Hasta el momento, la mejor La respuesta que he encontrado es simplemente escribir CMake install commands para cada uno de mis destinos y archivos de datos, y configurar el depurador MSVC para que se quede sin el directorio de instalación. Esto tiene el beneficio adicional de usar 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)
- 1. Ejecutando CMake en Windows
- 2. Cómo instalar cmake en Windows 64 bit
- 3. Uso de cmake en Windows para C++
- 4. cmake no funciona en Windows XP
- 5. CMake ... ccmake or cmake?
- 6. ¿Cuál es el generador predeterminado para CMake en Windows?
- 7. ¿Qué tiene de diferente el comando CMake configure_file en Windows?
- 8. ¿Cómo hacer que CMake encuentre google protobuf en Windows?
- 9. CMake GUI en Mac
- 10. Jenkins + Windows + CMake + múltiples tipos de compilación (depuración, versión)
- 11. portable-executable para cmake
- 12. Objetivos opcionales en Cmake
- 13. equivalente en Makefile CMake
- 14. Autotools vs CMake
- 15. Generando .dll usando CMake
- 16. cmake y visual studio
- 17. CMake RequireAdministrator
- 18. detección de la plataforma en Cmake
- 19. CMake tutorial
- 20. OpenCV VS 2010 C++ CMake
- 21. Vinculación de diferentes bibliotecas para compilaciones de depuración y liberación en Cmake en Windows?
- 22. equivalente "make dist" en CMake
- 23. Cómo usar FIND_JNI en cmake
- 24. Uso de boost.asio en cMake
- 25. depuración vs lanzamiento en CMAKE
- 26. Soporte de Cmake en Eclipse
- 27. bibliotecas de terceros en CMake
- 28. En CMake, ¿cómo funciona CHECK_INCLUDE_FILE_CXX?
- 29. Comprobar gcc minor en cmake
- 30. Uso DLL externa en cmake construir
supongo que está usando CMake para generar archivos de solución/proyecto de Visual Studio, ¿verdad? ¿Qué versión de Visual Studio se usa? ¿Qué versión de cmake? –
Sí, estoy usando CMake para generar los archivos de solución (cmake 2.6, VS 2005) – thekidder