[CMake] FW: cmake newbie questions
Alexander Neundorf
a.neundorf-work at gmx.net
Thu Jul 31 16:48:40 EDT 2008
On Thursday 31 July 2008, Phil Smith wrote:
> There are executables with z/OS, but they're linkedited and certainly won't
> run on Windows *at all*.
>
> Since I've never had to understand the format of an object file on Windows,
> I'm not sure how to answer the second question. Here's a screenshot of
> what the CheckTypeSizeC object file looks like after it's been transferred
> to an EBCDIC system (unprintable characters rendered as blanks):
>
> XSD ; @CRT0
> 00000001 XSD Ð@CHECKTY
> 00000002 XSD ^ @checkty
> 00000003 XSD main
> 00000004 XSD ^ info_sizeof
> 00000005 TXT ;main DCC î Ç
> 00000006 TXT °Ö} ì\} ì{} ì^{ \\Çí\{ å ^
> °ó K õì0{ åØ{ 0 å0{ 00000007 TXT ø ^ 0 P } } ì}} ì{} ì^{
> í{^ ì\} q } þ&0} & } ì0} ì00 00000008 TXT y å00
> 00000009 TXT ^ ñ+ã| ËÑ:Á?Ã$
> ) 00000010 RLD
> ø 00000011 END
> 1DASM01 800508213 00000012
I'd still be interested in the original file. Can you please send it to me ?
> Note that the "info_sizeof" in this case isn't even followed by a legible
> length, because the rest of the eyecatcher was still generated in ASCII.
> But if I force the -fasciiout flag, I see the "info_sizeof[00008]" in the
> object.
>
> Hmm, I hacked CheckTypeSize.cmake to force the -fasciiout flag, and
> verified that it's passing it, but it still fails the same way. The error
> is a bit funky:
>
> file STRINGS file "C:/Documents and
> Settings/Voltage/svn/Toolkit/trunk/vtk-core/CMakeFiles/CheckTypeSize.bin"
> cannot be read.
>
> It isn't at all clear to me where a ".bin" file would come from. I'd expect
> a .o or something? What does this error really mean? I can't seem to find
> anything on it.
That's the code from CheckTypeSize.cmake:
TRY_COMPILE(HAVE_${VARIABLE}
${CMAKE_BINARY_DIR}
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSizeC.c"
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_FLAGS}
"${CHECK_TYPE_SIZE_ADD_LIBRARIES}"
"${CHECK_TYPE_SIZE_ADD_INCLUDES}"
OUTPUT_VARIABLE OUTPUT
COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize.bin" )
This means TRY_COMPILE() copies the executable (well, the file which would be
an executable on other systems) to the file CheckTypeSize.bin and then (tries
to) extract the strings from it:
IF(HAVE_${VARIABLE})
FILE(STRINGS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize.bin"
CMAKE_CHECKTYPESIZE_STRINGS LIMIT_COUNT 2 REGEX "INFO:sizeof")
This command e.g. also recognizes if the file is an Intel hex file and handles
it accordingly.
Did you set the CMAKE_EXECUTABLE_SUFFIX appropriately for z/OS ?
Alex
More information about the CMake
mailing list