Hi all,
there was mail with this issues a view years ago:
https://cmake.org/pipermail/cmake/2014-October/058963.html
quote:
————————————————————————————————————————————-
Ninja generator sets the name to objectpath.d
            cmGlobalNinjaGenerator::EncodeDepfileSpace(objectFileName + ".d");

WindRiver sets the dep file name to objectDir/SourceName.d, so the ".obj" in 
"DEP_FILE = path/BaseName.c.obj.d" must be removed
Armcc just uses base name in the same directory as the command runs, 
"BaseName.d".  -depend_dir= can be used to control the directory for C but not 
asm.

The workaround is to patch the generated build.ninja

A proper solution is using new variables similar to above. (Just examples, not 
figured out <ARCH> etc)

WindRiver (not added to CMake):
SET (CMAKE_<LANG>_<COMPILER_ID>_DEPFILE_PATTERN 
<OBJECT_DIR>/<SOURCE_FILE_NAME>.d )

Armcc (RVDS patch exists for CMake):
SET (CMAKE_DEPFILE_FLAGS_C -depend_dir=<OBJECT_FULL_DIR> --depend_format=unix)
SET (CMAKE_C_ARMCC_DEPFILE_PATTERN <OBJECT_FULL_DIR>/<SOURCE_BASE_NAME>.d )
SET (CMAKE_DEPFILE_FLAGS_ASM --depend_format=unix)
SET (CMAKE_ASM_ARMCC_DEPFILE_PATTERN <SOURCE_BASE_NAME>.d )

Note: <OBJECT> is replaced in CMAKE_C_ARMCC_DEPFILE_PATTERN (but adding a 
semicolon), but not <OBJECT_DIR> (as that is evaluated after FLAGS/DEFINES) so 
it is a little more than just add new variables.
The workaround for armcc could therefore not use CMAKE_DEPFILE_FLAGS_C, the 
-depend_dir flag was added to normal FLAGS
———————————————————————————————-

I have a same problem with a GHS compiler. We can’t control the name of the 
generated *.d file while compile step.
My questions are:

1.) Is ist possible to change the object or/and the dependency file name 
generated for ninja?

2.) Why generates cmake the objectname as sourcefilename.{c,cpp}.obj?

I would expect as in make something like that:
DEP:=$(SRC:.cpp=.d)
OBJ:=$(SRC:.cpp=.obj)

Claus Klein




-- 

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-developers

Reply via email to