Comment créer des fichier de dependence avec microsoft compiler

Comment créer des fichier de dependence avec microsoft compiler - C++ - Programmation

Marsh Posté le 12-10-2010 à 16:12:33    

Hello,
 
J'essaye de traduire notre systeme de build en adoptant un principe de makefile non recursif.  
 
Vu qu'on doit etre multiplateforme on utilise le compilateur microsoft sur windows et gcc sur linux.  
 
Sur gcc on peut utiliser le flag -MD pour créer un fichier .d automatiquement.  
 
Je trouve pas d’équivalent avec le compilateur windows. Ca existe ou faut le faire à la main?

Reply

Marsh Posté le 12-10-2010 à 16:12:33   

Reply

Marsh Posté le 13-10-2010 à 11:40:21    

si tu veux te simplifier tes makefiles, tu peux éventuellement utiliser du gcc sous windows, en utilisant par exemple l'environnement MSYS.
 
Je ne connais pas ces fichiers .d, mais j'imagine que tu as déjà jeté un oeil aux flags de cl.exe et de link.exe
 


                         C/C++ COMPILER OPTIONS
 
 
                              -OPTIMIZATION-
 
/O1 minimize space                      /O2 maximize speed
/Ob<n> inline expansion (default n=0)   /Od disable optimizations (default)
/Og enable global optimization          /Oi[-] enable intrinsic functions
/Os favor code space                    /Ot favor code speed
/Ox maximum optimizations               /Oy[-] enable frame pointer omission
 
                             -CODE GENERATION-
 
/GF enable read-only string pooling     /Gm[-] enable minimal rebuild
/Gy[-] separate functions for linker    /GS[-] enable security checks
/GR[-] enable C++ RTTI                  /GX[-] enable C++ EH (same as /EHsc)
/EHs enable C++ EH (no SEH exceptions)  /EHa enable C++ EH (w/ SEH exceptions)
/EHc extern "C" defaults to nothrow
/fp:<except[-]|fast|precise|strict> choose floating-point model:
    except[-] - consider floating-point exceptions when generating code
    fast - "fast" floating-point model; results are less predictable
    precise - "precise" floating-point model; results are predictable
    strict - "strict" floating-point model (implies /fp:except)
/Qfast_transcendentals generate inline FP intrinsics even with /fp:except
/GL[-] enable link-time code generation /GA optimize for Windows Application
/Ge force stack checking for all funcs  /Gs[num] control stack checking calls
/Gh enable _penter function call        /GH enable _pexit function call
/GT generate fiber-safe TLS accesses    /RTC1 Enable fast checks (/RTCsu)
/RTCc Convert to smaller type checks    /RTCs Stack Frame runtime checking
/RTCu Uninitialized local usage checks
/clr[:option] compile for common language runtime, where option is:
    pure - produce IL-only output file (no native executable code)
    safe - produce IL-only verifiable output file
    oldSyntax - accept the Managed Extensions syntax from Visual C++ 2002/2003
    initialAppDomain - enable initial AppDomain behavior of Visual C++ 2002
    noAssembly - do not produce an assembly
/Gd __cdecl calling convention          /Gr __fastcall calling convention
/Gz __stdcall calling convention        /GZ Enable stack checks (/RTCs)
/QIfist[-] use FIST instead of ftol()
/hotpatch ensure function padding for hotpatchable images
/arch:<SSE|SSE2> minimum CPU architecture requirements, one of:
    SSE - enable use of instructions available with SSE enabled CPUs
    SSE2 - enable use of instructions available with SSE2 enabled CPUs
/Qimprecise_fwaits generate FWAITs only on "try" boundaries, not inside "try"
 
                              -OUTPUT FILES-
 
/Fa[file] name assembly listing file    /FA[scu] configure assembly listing
/Fd[file] name .PDB file                /Fe<file> name executable file
/Fm[file] name map file                 /Fo<file> name object file
/Fp<file> name precompiled header file  /Fr[file] name source browser file
/FR[file] name extended .SBR file
/doc[file] process XML documentation comments and optionally name the .xdc file
 
                              -PREPROCESSOR-
 
/AI<dir> add to assembly search path    /FU<file> forced using assembly/module
/C don't strip comments                 /D<name>{=|#}<text> define macro
/E preprocess to stdout                 /EP preprocess to stdout, no #line
/P preprocess to file                   /Fx merge injected code to file
/FI<file> name forced include file      /U<name> remove predefined macro
/u remove all predefined macros         /I<dir> add to include search path
/X ignore "standard places"
 
                                -LANGUAGE-
 
/Zi enable debugging information        /Z7 enable old-style debug info
/Zp[n] pack structs on n-byte boundary  /Za disable extensions
/Ze enable extensions (default)         /Zl omit default library name in .OBJ
/Zg generate function prototypes        /Zs syntax check only
/vd{0|1|2} disable/enable vtordisp      /vm<x> type of pointers to members
/Zc:arg1[,arg2] C++ language conformance, where arguments can be:
    forScope[-] - enforce Standard C++ for scoping rules
    wchar_t[-] - wchar_t is the native type, not a typedef
/ZI enable Edit and Continue debug info
/openmp enable OpenMP 2.0 language extensions
 
                              -MISCELLANEOUS-
 
@<file> options response file           /?, /help print this help message
/bigobj generate extended object format /c compile only, no link
/errorReport:option Report internal compiler errors to Microsoft
    none - do not send report
    prompt - prompt to immediately send report
    queue - at next admin logon, prompt to send report (default)
    send - send report automatically
/FC use full pathnames in diagnostics   /H<num> max external name length
(press <return> to continue)
/J default char type is unsigned
/MP[n] use up to 'n' processes for compilation
/nologo suppress copyright message      /showIncludes show include file names
/Tc<source file> compile file as .c     /Tp<source file> compile file as .cpp
/TC compile all files as .c             /TP compile all files as .cpp
/V<string> set version string           /w disable all warnings
/wd<n> disable warning n                /we<n> treat warning n as an error
/wo<n> issue warning n once             /w<l><n> set warning level 1-4 for n
/W<n> set warning level (default n=1)   /Wall enable all warnings
/WL enable one line diagnostics         /WX treat warnings as errors
/Yc[file] create .PCH file              /Yd put debug info in every .OBJ
/Yl[sym] inject .PCH ref for debug lib  /Yu[file] use .PCH file
/Y- disable all PCH options             /Zm<n> max memory alloc (% of default)
/Wp64 enable 64 bit porting warnings
 
                                -LINKING-
 
/LD Create .DLL                         /LDd Create .DLL debug library
/LN Create a .netmodule                 /F<num> set stack size
/link [linker options and libraries]    /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB                /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib


---------------
last.fm
Reply

Marsh Posté le 13-10-2010 à 12:36:50    

J'utilise deja cygwin pour pouvoir faire des scripts compatible en windows et linux mais je veux utiliser le compilateurs windows pour plusieurs raisons, d'une part il optimise mieux que gcc et d'autre part il produit des pdb qui permettent de débugger avec visual studio, ce qui est non négligeable quand on compare ça avec les debuger pour gcc.  
 
Ma solution est de faire une première passe gcc pour créer les dépendances et d'ensuite compiler avec cl mais je voudrais faire tout ça en une passe avec cl.  
 
Et c'est là que je bloque, visiblement il y a rien de prévu dans les flags compilateur pour gérer les fichier de dépendance.

Reply

Marsh Posté le 13-10-2010 à 13:28:22    

Dans l'aide ci-dessus je vois /showIncludes qui m'a l'air de fournir ce que tu veux, quitte a le passer dans une script pour le mettre en forme si necessaire.  


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 13-10-2010 à 14:19:58    

ah ouai effectivement, en passant le output de ce truc dans un sed qui vire les bouts en trop ça peut le faire. Je vais essayer de voir ce que je peux faire avec ça.  
 
Merci de m'avoir fait remarquer ce flag.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed