Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CMake: how to disable optimization of a single *.cpp file?

I would like to disable the optimization of a single *.cpp file within my CMake project. I found out that CMake provides the following to achieve this:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -O0)

However, this seems not to work for me. I generate a Visual Studio 2013 Project and whenever I change to 'Release' or 'RelWithDebInfo' it still fully optimizes that file as can be seen under the properties.

Does it matter where the above command is placed? I have multiple cmake files distributed over the whole project. I placed the above command directly in the cmake file where the *.cpp file gets added to the project.

Or is there any other way to tell CMake that this file should not get optimized at all?

like image 772
Simon Avatar asked Oct 31 '22 16:10

Simon


1 Answers

Thanks Tsyvarev!

Indeed I had to place the command in the cmake file where the according add_library() is contained in order to make it work.

But in addition there was also a small change I had to apply: Visual Studio needs -Od (instead of -O0) to disable optimization.

So the final command for Visual Studio builds looks like this:

SET_SOURCE_FILES_PROPERTIES(${FILE} PROPERTIES COMPILE_FLAGS -Od)

and this placed in the cmake file where the add_library() call is for that *.cpp file.

like image 95
Simon Avatar answered Nov 13 '22 06:11

Simon