[CMake] Build several libraries with different compilation flags

Michael Hertling mhertling at online.de
Fri Oct 1 12:57:16 EDT 2010


On 10/01/2010 05:10 PM, pellegrini wrote:
> Hi Ryan,
> 
> Yes, that might be the solution if I wanted to change the compiler flags 
> for the whole library but in my case, that is not on the whole
> library that I want to apply a new set of compiler flags but only on a 
> small number of files.

You could use symbolic links in junction with source properties:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(SYMLINKSOURCE C)
FILE(WRITE ${CMAKE_BINARY_DIR}/f1.c "void f(void){}\n")
ADD_LIBRARY(l1 SHARED f1.c)
ADD_CUSTOM_COMMAND(OUTPUT f2.c
  COMMAND ${CMAKE_COMMAND} -E create_symlink f1.c f2.c)
SET_SOURCE_FILES_PROPERTIES(f2.c PROPERTIES COMPILE_FLAGS "-O0")
ADD_LIBRARY(l2 SHARED f2.c)

So, the l{1,2} targets are compiled from the same source but with
different flags, and the latters can be specified per source file.

Regards,

Michael

> Ryan Pavlik a écrit :
>>  Look at the target properties instead of the source file properties.
>>
>> Ryan
>>
>> On 10/01/2010 08:27 AM, pellegrini wrote:
>>> Hello everybody,
>>>
>>> I would like to build two libraries that contain the same files but 
>>> with a slightly different set of compilation flags
>>> from one library to another. This within the same makefile. I was 
>>> thinking about an approach such as:
>>>
>>> add_library(my_lib1, STATIC, src_files ...)
>>> set_source_files_properties(file1, file2 ... PROPERTIES COMPILE_FLAGS 
>>> ...)
>>> add_library(my_lib2, STATIC, src_files ...)
>>> set_source_files_properties(file1, file2 ... PROPERTIES COMPILE_FLAGS 
>>> ...)
>>>
>>> does cmake sensitive to the order of these instruction ?
>>>
>>> thank you very much
>>>
>>> Eric


More information about the CMake mailing list