es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo compilar mocs_compilation_Debug.cpp generado por CMake con /bigobj.

Mi problema es que no sé cómo indicarle a mi CMakeLists.txt que compile el archivo mocs_compilation_Debug.cpp generado con la opción /bigobj.

Sé que puedo editar /bigobj en Visual Studio, pero necesito que el archivo sea generado con la opción de compilación.

En realidad, tengo casos de uso donde agrego fuentes en CMakeLists.txt con esa opción de compilación, pero todos los archivos ya existen cuando agrego la opción de compilación. El archivo mocs_compilation_Debug.cpp no existe en el momento de la generación (al menos en la primera generación).

Intenté lo siguiente en el CMakeLists.txt correspondiente:

set(BIG_OBJ_SOURCES
   "${CMAKE_CURRENT_BINARY_DIR}/UnitTests_autogen/mocs_compilation_Debug.cpp"
)
set_source_files_properties(${BIG_OBJ_SOURCES} PROPERTIES COMPILE_OPTIONS "/bigobj")

Hice esto porque el archivo moc_compilation_Debug.cpp correspondiente se está generando en el árbol binario, pero no es útil.

¿Alguien ha encontrado este mismo problema o tiene alguna idea?

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para Compilar mocs_compilation_Debug.cpp Generado con la opción /bigobj en CMakeLists.txt

    Si deseas compilar el archivo mocs_compilation_Debug.cpp generado con la opción /bigobj en CMakeLists.txt en lugar de editarlo en Visual Studio, puedes seguir los siguientes pasos:

    1. Agrega set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") en tu archivo CMakeLists.txt.
    2. Agrega las siguientes líneas en tu archivo CMakeLists.txt:

      set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/mocs_compilation_Debug.cpp PROPERTY COMPILE_FLAGS "/bigobj")
      set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/mocs_compilation_Debug.cpp PROPERTY GENERATED TRUE)
      

      Esto establecerá la propiedad COMPILE_FLAGS del archivo mocs_compilation_Debug.cpp generado como /bigobj y lo marcará como archivo fuente GENERATED.

    3. Ejecuta nuevamente el comando cmake para generar los archivos de proyecto.

    Esto debería compilar tu archivo mocs_compilation_Debug.cpp generado con la opción /bigobj. Si tienes varios archivos moc_*.cpp generados que deseas compilar con /bigobj, puedes agregarlos al comando set_property anterior.

    ¡Espero que esto te ayude!

Comments are closed.