2015-11-05 3 views
3

Я хотел бы отключить оптимизацию одного файла * .cpp в моем проекте CMake. Я узнал, что CMake обеспечивает следующее:CMake: как отключить оптимизацию одного файла * .cpp?

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0) 

Однако, похоже, это не работает для меня. Я генерирую проект Visual Studio 2013, и всякий раз, когда я перехожу к «Release» или «RelWithDebInfo», он все еще полностью оптимизирует этот файл, как это видно из свойств.

Имеет ли значение, где находится вышеуказанная команда? У меня есть несколько файлов cmake, распространяемых по всему проекту. Я поместил указанную выше команду непосредственно в файл cmake, где файл * .cpp добавлен в проект.

Или есть ли другой способ сообщить CMake, что этот файл не должен оптимизироваться вообще?

+1

Должно работать. Команда должна быть помещена в один и тот же файл cmake, где вызывается 'add_executable()'/'add_library()'. См. Также документацию для [set_source_files_properties] (https://cmake.org/cmake/help/v3.0/command/set_source_files_properties.html) – Tsyvarev

+0

Это добавит -O0 к параметрам компиляции, но если компиляция будет выпущена, вы закончите с -O0 и -O3 в командной строке? –

ответ

1

Спасибо Цыварев!

Действительно, мне пришлось разместить команду в файле cmake, где содержится соответствующая add_library(), чтобы заставить ее работать.

Но кроме того, было небольшое изменение, которое мне пришлось применить: Visual Studio требует -O d (вместо -O0), чтобы отключить оптимизацию.

Так последняя команда для Visual Studio строит выглядит следующим образом:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -Od) 

и это помещается в файл CMake, где вызов add_library() для этого * .cpp файл.

Смежные вопросы