CMake Platform Dependent Issues: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
(Replace content with link to new CMake community wiki)
 
(32 intermediate revisions by 9 users not shown)
Line 1: Line 1:
* [[CMake IA64 Issues|IA64 Issues]]
{{CMake/Template/Moved}}


* [[CMake Borland Compiler Issues|Borland Compiler Issues]]
This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/Platform-Dependent-Issues here].
 
== The Platforms / Compilers Table ==
 
{| border="1"
|- bgcolor="#abcdef"
! Platform !! System Info !! Compilers !! Macros !! List Dependencies !! Trace Syscal/Signal !! Runtime Library Path
|-
| Linux || uname -a || gcc, g++, icc || __linux || ldd program || strace || LD_LIBRARY_PATH
|-
| HP-UX || uname -a || cc, [http://docs.hp.com/en/B3901-90019/index.html aCC] || __hpux || chatr program || || SHLIB_PATH (32), LD_LIBRARY_PATH (64)
|-
| AIX || uname -a || xlc, xlC || _AIX || dump -H program || || LIBPATH
|-
| SunOS || uname -a || cc, CC || __sparc || ldd program || || LD_LIBRARY_PATH (32), LD_LIBRARY_PATH_64 (64)
|-
| IRIX || hinv, uname -a || cc, CC || __sgi || ldd program || || LD_LIBRARY_PATH (o32), LD_LIBRARYN32_PATH (n32), LD_LIBRARY64_PATH (64)
|-
| Max OSX / Darwin || system_profiler, uname -a || gcc, g++ || __APPLE__ || otool -L program || ktrace -f outfile program; kdump outfile || DYLD_LIBRARY_PATH
|-
| Cygwin || uname -a || gcc, g++ || __CYGWIN__, _WIN32 || depends program.exe || || PATH
|-
|rowspan=3| Windows ||rowspan=3| ver || Visual Studio 6, cl ||rowspan=3| _WIN32 || depends program.exe ||rowspan=3| ||rowspan=3| PATH
|-
|Visual Studio 7, cl || depends program.exe '''†'''
|-
|Visual Studio 7.1, cl || depends program.exe '''†'''
|}
 
* '''†''' In order for ''depends'' to be installed, the "Win32 Platform SDK Tool" needs to be selected when installing Visual Studio (See [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vccondeterminingwhichdllstoredistribute.asp Determining Which DLLs to Redistribute]).
 
==Architecture Modes==
 
{| border="1"
|- bgcolor="#abcdef"
! Compiler !! Command !! Languages !! Architecture Flags !!colspan=2| Macros
|-
|rowspan=2| GNU || gcc || C || || ||rowspan=2| __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__
|-
| g++ || C++ || ||
|-
|rowspan=2| SGI MIPSpro || cc || C ||rowspan=2| -o32, -n32, -64 || ||rowspan=2| _COMPILER_VERSION, _MIPS_SIM==_ABIO32 (o32), _MIPS_SIM==_ABIN32 (n32), _MIPS_SIM==_ABI64 (64)
|-
| CC || C++ ||
|-
|rowspan=2| SunPro || cc || C ||rowspan=2| -xarch=... || __SUNPRO_C ||rowspan=2| #include <sys/isa_defs.h>: _ILP32 (32), _LP64 (64)
|-
| CC || C++ || __SUNPRO_CC
|-
|rowspan=2| HP || cc || C ||rowspan=2| +DD64 || ||rowspan=2| __LP64__ (64)
|-
| aCC || C++ || __HP_aCC
|-
|rowspan=2| IBM VisualAge || xlc || C ||rowspan=2| -q32, -q64 || __IBMC__ ||
|-
| xlC || C++ || __IBMCPP__ ||
|}
 
==Compiler Options and Flags==
 
{| border="1"
|- bgcolor="#abcdef"
! Compiler !! Full warnings !! Warnings as Errors !! Disabling a particular warning (#n)
|-
| gcc || -W -Wall || -Werror ||
|-
| MIPS Pro || -fullwarn || -w2 ||
|-
| icc || -Wall -w2 -Wcheck || -Werror || -wd(#n)
|-
| bcc32 || || -g1 || -w-(#n)
|-
| xlC || -qflag=w:w or -qlanglv=ansi ||  ||
|-
| cl || /W4 || /WX || /Wd(#n)
|-
| aCC || +w || +We || +Warg1[,arg2,..argn]
|}
 
* More platform specific information can be found in [http://bhami.com/rosetta.html ROSETTA STONE] platforms table (Mostly for system administrators)
 
* Another even more complete table: [http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html Using static and shared libraries across platforms] (For various compiler flags and options)
 
== Debugging Tips ==
 
=== The gdbrun Script for UNIX-like Platforms ===
 
The following is an extremely useful script that will run any command line in a gdb debugger. Put this text in an executable file called "gdbrun":
 
<pre><nowiki>
#!/bin/sh
 
extra_text=""
if [ "$1" == "--break-main" ]; then
  extra_text="break main"
  shift
fi
 
EXEC="$1"
 
shift
 
run_text="run"
for a in "$@"; do
  run_text="${run_text} \"$a\""
done
 
TMPFILE=/tmp/gdbrun.$$.$#.tmp
cat > ${TMPFILE} <<EOF
${extra_text}
${run_text}
EOF
 
gdb -x ${TMPFILE} "${EXEC}"
rm -f "${TMPFILE}"
 
</nowiki></pre>
 
Then one may debug a test like this:
 
<pre><nowiki>
gdbrun /path/to/myexe --some-arg --some-other-arg
</nowiki></pre>
 
Notes about this script:
* It supports spaces in argument names (note the for loop)
* Takes extra argument --break-main, which causes the program to stop once all the libraries are loaded
* It always run debugger, even when program exits normally
* Cannot be used with MPI or any other system that runs your program from a shell script
 
{{CMake/Template/Footer}}

Latest revision as of 15:41, 30 April 2018


The CMake community Wiki has moved to the Kitware GitLab Instance.

This page has moved here.