[CMake] Set different compilation flags for specific file

James Bigler bigler at cs.utah.edu
Tue Jun 12 14:27:47 EDT 2007


I also tried making it its own library, but that didn't work:

ADD_LIBRARY(mylib ${source_files})

SET(CMAKE_CXX_FLAGS_RELEASE_SAVED ${CMAKE_CXX_FLAGS_RELEASE}  )
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -g3"  )
ADD_LIBRARY(expon "ExponSSE.cc")
SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE_SAVED}  )

TARGET_LINK_LIBRARIES(mylib expon)

OUTPUT of make VERBOSE=1 (which is wrong).

[  0%] Building CXX object CMakeFiles/expon.dir/ExponSSE.o
/usr/bin/g++-4.0   -Dexpon_EXPORTS -msse -msse2 -DSCI_NOPERSISTENT 
-march=pentium4 -mtune=pentium4  -msse -msse2 -msse3 -mfpmath=sse  -O3 -DNDEBUG 
-g3 -fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock -ffast-math 
-freorder-blocks -fPIC -I/home/scinew/bigler/manta/rtsl/manta-test/opt 
-I/home/scinew/bigler/manta/rtsl/manta-test -I/home/sci/bigler/manta/trunk 
-I/home/sci/bigler/manta/trunk/SCIRun 
-I/home/sci/bigler/manta/trunk/SCIRun/include 
-I/home/sci/bigler/manta/trunk/opt-4.0.2/include   -o 
CMakeFiles/expon.dir/ExponSSE.o -c 
/home/scinew/bigler/manta/rtsl/manta-test/ExponSSE.cc

===============================================
I put MESSAGE statements around, and it looks like it is changing 
CMAKE_CXX_FLAGS_RELEASE.  Is there something I'm missing?

James Bigler wrote:
> So I can't set this for a single source file, but rather a library?
> 
> Can I add additional sources to the library after I added the library:
> 
> ADD_LIBRARY(mylib ${other_sources})
> SET(CMAKE_CXX_FLAGS_RELEASE_SAVED ${CMAKE_CXX_FLAGS_RELEASE}  )
> SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Ox /Ob1 /DNDEBUG"  )
> ADD_LIBRARY(mylib ${special_file})
> SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE_SAVED}  )
> 
> This didn't seem to work.
> 
> James
> 
> Rob Mathews wrote:
>> Put it in that one file like this:
>> SET(CMAKE_CXX_FLAGS_RELEASE_SAVED ${CMAKE_CXX_FLAGS_RELEASE}  )
>> SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Ox /Ob1 /DNDEBUG"  )
>> .. add the library or target
>> SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE_SAVED}  )
>>
>> -----Original Message-----
>> From: James Bigler [mailto:bigler at cs.utah.edu] Sent: Tuesday, June 12, 
>> 2007 1:38 PM
>> To: Rob Mathews
>> Cc: cmake at cmake.org
>> Subject: Re: [CMake] Set different compilation flags for specific file
>>
>> Wouldn't that set it for all the source files in the project?  I just
>> want to override 1 file amongst many others.
>>
>> Rob Mathews wrote:
>>> Why wouldn't you simply do this:
>>>
>>> SET(CMAKE_CXX_FLAGS_RELEASE "/MT /Ox /Ob1 /DNDEBUG"  )
>>>
>>> (or whatever your particular flags are)
>>> ?
>>>
>>> -----Original Message-----
>>> From: cmake-bounces+rmathews=envoyww.com at cmake.org
>>> [mailto:cmake-bounces+rmathews=envoyww.com at cmake.org] On Behalf Of
>> James
>>> Bigler
>>> Sent: Tuesday, June 12, 2007 1:14 PM
>>> To: cmake at cmake.org
>>> Subject: [CMake] Set different compilation flags for specific file
>>>
>>> I have a file that doesn't compile properly with certain optimization
>>> flags that I wish to use on the rest of my system.  I poked around 
>>> the wiki and
>> the
>>> help file, but I can't find any information on how to do this.
>>>
>>> According to the documentation SET_SOURCE_FILES_PROPERTIES
>> COMPILE_FLAGS
>>> only appends new flags.  I want to override the values in 
>>> CMAKE_CXX_FLAGS
>> and
>>> CMAKE_CXX_FLAGS_RELEASE.
>>>
>>> Thanks,
>>> James
>>> _______________________________________________
>>> CMake mailing list
>>> CMake at cmake.org
>>> http://www.cmake.org/mailman/listinfo/cmake
>>>
>>>
>>
>>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake


More information about the CMake mailing list