Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Toolchain woes

> I tried to create a single tool for C and C++ compilations, since it is
> the same physical binary responsible for both. Also, the compiler
> options are identical, and I'd prefer not having to duplicate them in
> two tools. When I tried adding two input types to the tool (one for c
> and one for c++), CDT attempted to pass source code files multiple times
> to the compiler (which casued a fatal compiler error). I tried to fiddle
> around with the "primaryInput" attribute, but to no success. Is it
> possible to have a single tool for C and C++, and if so, how?

Once again we use this same approach, and in our case using a single
tool for C and C++ does seem to work fine, below an excerpt from one
of our toolsets:

      <tool
            command="cc166"
            commandLineGenerator="com.tasking.managedbuilder.TskManagedCommandLineGenerator"
            name="C/C++ Compiler"
            outputFlag="-c -o"
            id="com.tasking.c166.cc"
            announcement="Compiling ${&lt;F}"
            errorParsers="com.tasking.managedbuilder.TskErrorParser"
            natureFilter="both">
         <inputType
               dependencyContentType="org.eclipse.cdt.core.cHeader"
               dependencyExtensions="h,hpp"
               id="com.tasking.c166.cppInputType"
               multipleOfType="false"
               name="C++"
               primaryInput="true"
               sourceContentType="org.eclipse.cdt.core.cxxSource"/>
         <inputType
               dependencyContentType="org.eclipse.cdt.core.cHeader"
               dependencyExtensions="h"
               id="com.tasking.c166.cpp.cInputType"
               name="C"
               primaryInput="true"
               sourceContentType="org.eclipse.cdt.core.cSource"/>


For a mixed C/C++ project this resulted in the following subdir.mk 
makefile excerpt:

C_FILES += "../cstart.c"

"cstart.d" : "../cstart.c"
"cstart.obj" : "../cstart.c"
	@echo Compiling ${<F}
	@"C:\tsk\c166-VX v2.1r3\bin\cc166" -c -o "$@" "$<" -Cc167 ...

C++_FILES += "../hello.cpp"

"hello.obj" : "../hello.cpp"
	@echo Compiling ${<F}
	@"C:\tsk\c166-VX v2.1r3\bin\cc166" -c -o "$@" "$<" -Cc167 ...

Note that we use our own makefile generator, but also the internal
builder does not show any double calls. So it looks like it is possible
to use a single C/C++ tool.

Regards,
  Wieant


Back to the top