On Fri, Aug 30, 2019, at 1:47 AM, Eric Doenges wrote:
> On 29.08.2019 22:38, fdk17 wrote:
>> On Thu, Aug 29, 2019, at 2:52 PM, Kyle Edwards via CMake wrote:
>>> On Thu, 2019-08-29 at 18:27 +0100, hex wrote:
>>> > hello community,
>>> > 
>>> > CMake builds a C project with gcc -o target_name. I have a compiler
>>> > very similar to GCC and I am trying configure CMake C language for
>>> > it.
>>> > 
>>> > The compiler does not support the -o argument when linking objects. I
>>> > wonder if there is a way to remove or modify this argument, maybe
>>> > through one of the properties on targets?
>>> > 
>>> > thank you
>>> 
>>> Your best bet would be to modify the CMake source code to support your
>>> compiler. (Upstreaming your changes would be welcome.)
>>> 
>>> As a matter of interest, what does it use instead of -o?
>>> 
>>> Kyle
>> 
>> If you are using the Makefile generator then try:
>> https://cmake.org/cmake/help/latest/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.html
>> You may then be able to provide the rules needed, refer to 
>> "Modules/CMakeCInformation.cmake".
>> The way I understand it is that the rule templates are used by the Makefile 
>> generator.
>> 
> The way I understand the documentation, CMAKE_USER_MAKE_RULES_OVERRIDE 
> applies for all generators, not just the Makefile one. What you are 
> apparently supposed to do is create a file that sets all the "rule variables" 
> as required (in this case, CMAKE_C_COMPILE_OBJECT), and then include that 
> file via CMAKE_USER_MAKE_RULES_OVERRIDE. I'm not sure if these 'rule 
> variables' are documented anywhere - but you can look into "<path where CMake 
> is installed>/share/cmake-<version>/Modules/Compiler" for inspiration. 
> Another good starting point would be 
> "<...>/share/cmake-<version>/Modules/CMakeCInformation.cmake".

> 

> With kind regards,
>  Eric
> 

> *Dr. Eric Dönges *
>  Senior Software Engineer

> 


I could have been clearer about the use of CMAKE_USER_MAKE_RULES_OVERRIDE. It 
wasn't my intention to suggest that only the Makefile generator makes use of 
this variable.

In a quick check I only saw the CMAKE_C_COMPILE_OBJECT rule being used by the 
Makefile (and maybe the Ninja) generator and I know that it isn't used by the 
GHS Multi generator. Which is why I mentioned the Makefile generator 
specifically in regards to changing a "-o" to something else.

If you look at Modules/CMakeCInformation.cmake it will only define a rule if it 
hasn't already been previously set either by the definitions in the compiler / 
platform files that get included first and then by the override file.

You won't need to define all the rules in the override file just the ones you 
care to change. Also not all of the rules that get defined applies to all of 
generators (such as CMAKE_C_COMPILE_OBJECT as already mentioned).

A good example to follow is Modules/Compiler/TI-C.cmake to change a "-o" to 
something else. From TI-C.cmake:
set(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> --compile_only --c_file=<SOURCE> 
<DEFINES> <INCLUDES> <FLAGS> --output_file=<OBJECT>")

Then as suggested the override file could be the basis of a new compiler file 
that gets submitted upstream.

--
F
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to