[CMake] CHECK_FUNCTION_EXISTS(UuidCreate HAVE_UUIDCREATE)
Bill Hoffman
bill.hoffman at kitware.com
Mon May 5 14:49:34 EDT 2008
Mathieu Malaterre wrote:
> Ok. I do not understand how to use cl, I switch to using gcc instead
> (cygwin). Here it is again:
>
>
> /usr/local/bin/gcc.exe -DCHECK_FUNCTION_EXISTS=UuidCreate -o
> CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.o -c
> /usr/share/cmake-2.4.8/Modules/CheckFunctionExists.c
> Linking C executable cmTryCompileExec.exe
> /usr/bin/cmake.exe -P CMakeFiles/cmTryCompileExec.dir/cmake_clean_target.cmake
> /usr/local/bin/gcc.exe -DCHECK_FUNCTION_EXISTS=UuidCreate
> "CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.o" -o
> cmTryCompileExec.exe
> -Wl,--major-image-version,0,--minor-image-version,0 -lrpcrt4
> CMakeFiles/cmTryCompileExec.dir/CheckFunctionExists.o:CheckFunctionExists.c:(.text+0x1a):
> undefined reference to `_UuidCreate'
> collect2: ld returned 1 exit status
> make[1]: Leaving directory
> `/home/mmalaterre/Projects/gdcm/debug-gcc422/CMakeFiles/CMakeTmp'
> make[1]: *** [cmTryCompileExec.exe] Error 1
> make: *** [cmTryCompileExec/fast] Error 2
>
>
> where is the '_' coming from ? Is this something standard to gcc ?
>
Standard for C compilers to add _ infront of any symbol.
1. Use --debug-trycompile.
2. Get the source code out created in --debug-trycompile run
3. try to compiple the source code by hand cl CheckFunctionExists.c
rpcrt4.lib or gcc CheckFunctionExists.c -lrpcrt4.
4. look at the code in CheckFunctionExists.c
If I had to guess, I would say CheckFunctionExists.c forward declares a
C function, and that UuidCreate is somehow a macro in windows.h
-Bill
More information about the CMake
mailing list