Как скомпилировать сгенерированный CMake mocs_compilation_Debug.cpp с /bigobj

#c #qt #cmake #moc

Вопрос:

моя проблема в том, что я не знаю, как сказать своему CMakeLists.txt , чтобы он скомпилировал сгенерированный mocs_compilation_Debug.cpp /bigobj файл .

Я знаю, что могу редактировать /bigobj в Visual Studio, но мне нужно, чтобы этот файл был сгенерирован с опцией компиляции.

На самом деле у меня есть варианты использования, в которых я добавляю источники в CMakeLists.txt с этой опцией компиляции, но все файлы уже существуют, когда я добавляю опцию компиляции. В mocs_compilation_Debug.cpp не существует во время генерации (по крайней мере, в первом поколении).

Я попробовал следующее в соответствии CMakeLists.txt:

 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")  

Я сделал это, потому что, согласно moc_compilation_Debug.cpp генерируется в двоичном дереве, но он не используется.

Кто-нибудь сталкивался с такой же проблемой или у кого-нибудь есть идея?

Спасибо.

Ответ №1:

Я упомянул, что

 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")  

не получилось. Но это работает. Я удалил все файлы, сгенерированные CMake, и сгенерировал их снова. Я проверил свойства файла в IDE и увидел /bigobj опцию компиляции. Таким образом, можно добавить опцию компиляции в файл, которого не существует во время создания.