[CMake] add_custom_command using CMAKE_CXX_FLAGS

Michael Wild themiwi at gmail.com
Mon Aug 24 15:28:19 EDT 2009


On 24. Aug, 2009, at 19:38, John Smith wrote:

> On Aug 24, 2009, at 12:48 PM, Tyler Roscoe wrote:
>> On Sun, Aug 23, 2009 at 09:03:22PM -0400, John Smith wrote:
>>> I am using the following test case in an attempt to add a custom
>>> command to build an assembly file. The assembly file should be
>>> compiled with the C++ compiler driver (which in turn should invoke  
>>> the
>>> assembler after pre-processing), and I am building up a
>>> CMAKE_CXX_FLAGS variable from separate pieces:
>>
>> I think you can just hand your .S files to add_library(). Did you try
>> searching the ML archives or google for how to handle assembler files
>> with CMake?
>
> I have tried doing that. However, the net end result is that I get a  
> rule that invokes the assembler on the assembly source file. My top- 
> level assembly source file is a shell containing a bunch of platform- 
> specific conditionals, which in turn guard include directives for  
> platform-specific assembly source files. Thus, I want to have the C+ 
> + compiler driver compile the top-level file; the compiler driver  
> would first preprocess the include directives and then invoke the  
> assembler on the resulting translation unit.
>

Why don't you do this:

set(ASM_SRCS bar.S)
add_library(test SHARED foo.cpp ${ASM_SRCS})
set_source_files_properties(${ASM_SRCS} PROPERTIES
   LANGUAGE C
   )

This will get CMake to treat the ASM files as C files and just pass  
them to the C-compiler, which in turn will preprocess them. I know  
this works with gcc, I'm not sure whether this will work with anything  
else.

Michael



More information about the CMake mailing list