[CMake] CMake 2.8.2 with WindRiver diab compiler dcc.exe/dplus.exe on WinXP: CMake Error: Could not COPY_FILE. while detecting compiler ABI

Alexander Neundorf a.neundorf-work at gmx.net
Mon Sep 20 15:59:43 EDT 2010


On Thursday 16 September 2010, Molsen, Hannes wrote:
> Hello everyone,
>
> Currently I am trying to compile a Software for a PowerPC PPC603 running
> VxWorks. For that I use the Diab-Compilers with mingw32-make on MS Windows
> XP. The makefiles should be created by CMake MinGW Makefile generator (I
> use Version 2.8.2).
>
> Therefore I started with reading the reading and acting as described in the
> cross-compiler section of the wiki-doc
> (http://www.paraview.org/Wiki/CMake_Cross_Compiling), now having a
> toolchain file (TC_diab.cmake) and a platform-file
> (Generic-DCC-PPC603.cmake) which seem to be processed correctly. I already
> found out how CMake detects the diab compiler correctly
> (http://www.mail-archive.com/cmake@cmake.org/msg20240.html) and added the
> proposed changes to the files CMakeCXXCompilerId.cpp.in and
> CMakeCCompilerId.c.in. This worked well and the corresponding output is
>
> 	-- The C compiler identification is Diab
> 	-- The CXX compiler identification is Diab
> 	-- Check for working C compiler:
> D:/CCView/tools/tornado/host/diab/WIN32/bin/dcc.exe -- Check for working C
> compiler: D:/CCView/tools/tornado/host/diab/WIN32/bin/dcc.exe -- works
>
> Same for the CXX compiler.
>
> The problem comes in the next step, where CMake tries to find detect the
> compiler ABI. In this step CMake seems to try to copy something but does
> not find it. The output is as follows (CXX resp.):
>
> 	-- Detecting C compiler ABI info
> 	CMake Error: Could not COPY_FILE.
> 	  OutputFile: ''
> 	    copyFile:
> 'D:/CCView/binaries/PPC603diab/rat/Framework/CMakeFiles/CMakeDetermineCompi
>lerABI_C.bin'
>
> 	Unable to find executable for try_compile: tried
> 	"D:/CCView/binaries/PPC603diab/rat/Framework/CMakeFiles/CMakeTmp/cmTryComp
>ileExec" and
> 	"D:/CCView/binaries/PPC603diab/rat/Framework/CMakeFiles/CMakeTmp/Debug/cmT
>ryCompileExec" and
> 	"D:/CCView/binaries/PPC603diab/rat/Framework/CMakeFiles/CMakeTmp/Developme
>nt/cmTryCompileExec".
>
> 	-- Detecting C compiler ABI info - done
> 	CMake Error at C:/Program Files/CMake
> 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerABI.cmake:40 (FILE): file
> STRINGS file
> 	 
> "D:/CCView/binaries/PPC603diab/rat/Framework/CMakeFiles/CMakeDetermineCompi
>lerABI_C.bin" cannot be read.
> 	Call Stack (most recent call first):
> 	  C:/Program Files/CMake
> 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:71
> 	(CMAKE_DETERMINE_COMPILER_ABI) CMakeLists.txt:8 (PROJECT)
>
> As I read (http://www.cmake.org/pipermail/cmake/2010-May/037118.html) the
> problem can be "solved" by adding --debug-trycompile as parameter. This
> seems to not delete the temporary files and somehow the problem goes away.
> So I wrote myself a batch-file that contains the following lines:
>
> 	cd /D "%TOOLS_SNAPSHOT_DIR_UX%\binaries\PPC603diab\rat\%SUBDIR%"
>
> 	cmake -G "MinGW Makefiles"
> -DCMAKE_TOOLCHAIN_FILE="%TOOLS_SNAPSHOT_DIR_UX%\rat\%SUBDIR%\TC_diab.cmake"
> 	"%TOOLS_SNAPSHOT_DIR_UX%\rat\%SUBDIR%""C:\Program Files\CMake
> 2.8\bin\cmake.exe" -G "MinGW Makefiles"
> -	DCMAKE_TOOLCHAIN_FILE="%TOOLS_SNAPSHOT_DIR_UX%\rat\%SUBDIR%\TC_diab.cmake
>" 	"%TOOLS_SNAPSHOT_DIR_UX%\rat\%SUBDIR%"
>
> 	echo = Fixing copy error bug...
> 	cmake --debug-trycompile "%TOOLS_SNAPSHOT_DIR_UX%\rat\%SUBDIR%"
>
> after that the output is
>
> 	[...]
> 	-- Configuring incomplete, errors occurred!
>
> 	Fixing copy error bug...
> 	debug trycompile on
> 	-- Configuring done
> 	-- Generating done
> 	-- Build files have been written to:
> D:/CCView/binaries/PPC603diab/rat/Framework [...]
>
> So now my real questions:
>
> What causes CMake to fail at the COPY_FILE stage?

This comes from Sources/cmCoreTryCompile.cxx, there FindOutputFile() 
apparently was not successful in finding the linked executable.
The value of CMAKE_EXECUTABLE_SUFFIX is used there.
You need a valid setpu for creating executable, i.e. the suffix must be set 
and also the CMAKE_C/CXX_LINK_EXECUTABLE variables must be set properly.

Can you please post the CMakeOutput.log and CMakeError.log from when that 
happens ?

You may also dig into the code and check what's going wrong :-)

Alex


More information about the CMake mailing list