#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
опцию компиляции. Таким образом, можно добавить опцию компиляции в файл, которого не существует во время создания.