c++ - tamaño - En CMake, ¿cómo trabajo con los directorios de depuración y lanzamiento que Visual Studio 2010 intenta agregar?
cambiar fuente visual studio code (2)
Depende un poco de lo que desee con precisión, pero le recomendaría echar un vistazo a las propiedades de destino disponibles, similar a esta pregunta .
Depende un poco de lo que quieras exactamente. Para cada destino, puede establecer manualmente las propiedades library_output_directory o runtime_output_directory .
if ( MSVC )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${youroutputdirectory} )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_DEBUG ${youroutputdirectory} )
set_target_properties( ${targetname} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELEASE ${youroutputdirectory} )
# etc for the other available configuration types (MinSizeRel, RelWithDebInfo)
endif ( MSVC )
También puedes hacer esto globalmente para todos los subproyectos, usando algo como esto:
# First for the generic no-config case (e.g. with mingw)
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${youroutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${youroutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${youroutputdirectory} )
# Second, for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${youroutputdirectory} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
Estoy tratando de construir uno de mis proyectos basados en CMake de hace un par de años con Visual Studio 2010 y tengo problemas con el directorio de salida de un proyecto. Visual Studio siempre ha tenido mucho interés en agregar los subdirectorios Debug / y Release / al generar binarios, y por varias razones siempre he estado muy interesado en eliminarlos, ahora que estoy usando una nueva versión de CMake y una nueva versión de Visual Studio, la vieja solución en CMake ya no parece funcionar, y estoy buscando encontrar la "nueva" forma de hacerlo.
Con una versión anterior de CMake (2.6) y una versión anterior de Visual Studio (2008), usé lo siguiente:
IF(MSVC_IDE)
# A hack to get around the "Debug" and "Release" directories Visual Studio tries to add
SET_TARGET_PROPERTIES(${targetname} PROPERTIES PREFIX "../")
SET_TARGET_PROPERTIES(${targetname} PROPERTIES IMPORT_PREFIX "../")
ENDIF(MSVC_IDE)
Esto funcionó bien, pero ya no parece hacer el truco. ¿Alguien sabe de una solución similar pero más actualizada que funcione con CMake 2.8.6 y Visual Studio 2010?
En las versiones actuales de CMake, puede utilizar una expresión generadora para LIBRARY_OUTPUT_DIRECTORY
para evitar el sufijo específico de la configuración.
Acabo de agregar $<$<CONFIG:Debug>:>
, que siempre se expande a nada, a la mía. Esto parece un poco extraño, pero funciona, y no es tan raro que no puedas explicarlo con un breve comentario:
# Use a generator expression so that the specified folder is used directly, without any
# configuration-dependent suffix.
#
# See https://cmake.org/cmake/help/v3.8/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.html
set_target_properties(library PROPERTIES
LIBRARY_OUTPUT_DIRECTORY my/folder/$<$<CONFIG:Debug>:>)