c++ - precompiled headers problem
- W這dzimierz Skiba (17/17) Oct 08 2004 Hi!
- Walter (7/22) Oct 08 2004 What I prefer to do is create a "total.h" for each project, and make a
- W這dzimierz Skiba (17/20) Oct 11 2004 I probably not detailed it enough. The problem is that we do have such f...
- Walter (8/27) Oct 11 2004 file
- W這dzimierz Skiba (17/20) Oct 11 2004 Because that would work for multilib version of the build while in
- Walter (6/26) Oct 14 2004 I don't understand why you cannot use a total2.h. It needn't be used for...
- W這dzimierz Skiba (20/23) Oct 14 2004 Because:
- Jan Knepper (15/35) Oct 11 2004 Why don't you generate the precompiled header file with:
- W這dzimierz Skiba (15/24) Oct 12 2004 Because I can't find the reference to such usage in the DMC documentatio...
- Jan Knepper (23/35) Oct 12 2004 This is how the IDDE does it...
- W這dzimierz Skiba (12/32) Oct 12 2004 I see, thanks.
- chris elliott (4/13) Oct 13 2004 I've not had time to look at the patch yet, but I would have thought
- W這dzimierz Skiba (12/14) Oct 13 2004 Yes and no. Yes, it seems possible to put it int -HF during creation of
- Walter (1/1) Oct 22 2004 There's a new switch for this in the 8.42.1 beta. -Walter
- W這dzimierz Skiba (4/5) Oct 25 2004 Thank you very much! I will test it ASAP.
Hi! I'm trying to add precompiled headers support to the bakefiles ( http://bakefile.sourceforge.net/ ) where dmars makefile and smake are already supported. I have a couple of problems. One of the major packages supported is wxWidgets toolkit. The build system makes in one make a few libraries. They all share directory for objs, for libs for includes. They all use one common header. There is need for having separated precompiled headers for each lib achieved from the same header in the same directory. Do I understand correct from the online DMC site (the page which covers precompiled headers) that it's impossible because with -HF I can influence name of precompiled header file during writing only? If I fail to understand it or I miss some workaround, than I would appreciate any helpful comment added to this thread or directly to the patch entry in bakefile patch tracker. http://sourceforge.net/tracker/index.php?func=detail&aid=1043143&group_id=83016&atid=568031 http://sourceforge.net/tracker/index.php?func=detail&aid=1041456&group_id=9863&atid=309863 Thanks in advance for any help, ABX
Oct 08 2004
What I prefer to do is create a "total.h" for each project, and make a precompiled header for it called "total.sym". You can have the compiler refer to it with the -HItotal.h flag. "W這dzimierz Skiba" <abx abx.art.pl> wrote in message news:ck6p8i$258u$1 digitaldaemon.com...Hi! I'm trying to add precompiled headers support to the bakefiles ( http://bakefile.sourceforge.net/ ) where dmars makefile and smake are already supported. I have a couple of problems. One of the major packages supported is wxWidgets toolkit. The build system makes in one make a few libraries. They all share directory for objs, for libs for includes. They all use one common header. There is need for having separated precompiled headers for each lib achieved from the same header in the same directory. Do I understand correct from the online DMC site (the page which covers precompiled headers) that it's impossible because with -HF I can influence name of precompiled header file during writing only? If I fail to understand it or I miss some workaround, than I would appreciate any helpful comment added to this thread or directly to the patch entry in bakefile patch tracker.http://sourceforge.net/tracker/index.php?func=detail&aid=1043143&group_id=83016&atid=568031http://sourceforge.net/tracker/index.php?func=detail&aid=1041456&group_id=9863&atid=309863Thanks in advance for any help, ABX
Oct 08 2004
"Walter" <newshound digitalmars.com> wrote in news:ck7hb3$2o25$1 digitaldaemon.com:What I prefer to do is create a "total.h" for each project, and make a precompiled header for it called "total.sym". You can have the compiler refer to it with the -HItotal.h flag.I probably not detailed it enough. The problem is that we do have such file already (at least in wxWidgets). To make it more clearer for you: we have possibility of making library monolithic or multilib. This cause that for several builds common header is single for a few libraries and therefore such headers look different for each lib (because tometimes it serves for bulding dll or interfacing such dll for example) and dependicies look like: all: lib1 lib2 lib1: sym1 obj11 obj12 lib2: sym2 obj21 obj22 sym1: total.h sym2: total.h And now problem raises: if sym1 and sym2 share the same header and the same directory, how can I point to compilation of objs which sym file should be used ? ABX
Oct 11 2004
"W這dzimierz Skiba" <abx abx.art.pl> wrote in message news:ckdbh1$p16$1 digitaldaemon.com..."Walter" <newshound digitalmars.com> wrote in news:ck7hb3$2o25$1 digitaldaemon.com:fileWhat I prefer to do is create a "total.h" for each project, and make a precompiled header for it called "total.sym". You can have the compiler refer to it with the -HItotal.h flag.I probably not detailed it enough. The problem is that we do have suchalready (at least in wxWidgets). To make it more clearer for you: we have possibility of making library monolithic or multilib. This cause that for several builds common header is single for a few libraries and therefore such headers look different for each lib (because tometimes it serves for bulding dll or interfacing such dll for example) and dependicies looklike:all: lib1 lib2 lib1: sym1 obj11 obj12 lib2: sym2 obj21 obj22 sym1: total.h sym2: total.h And now problem raises: if sym1 and sym2 share the same header and thesamedirectory, how can I point to compilation of objs which sym file should be used ?Why not make a total2.h that simply consists of: #include <total.h> and use that for the sym2 precompiled header?
Oct 11 2004
"Walter" <newshound digitalmars.com> wrote in news:ckdhk2$vp7$1 digitaldaemon.com:Why not make a total2.h that simply consists of: #include <total.h> and use that for the sym2 precompiled header?Because that would work for multilib version of the build while in monolithic build they still need to use the same header. Also we have well established convenience for building begining of cpp files. http://www.wxwidgets.org/standard.htm#pch #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif Above works with Open Watcom, VisualC, GCC, Borland. Changing it to anything more complicated would be hardly maintained and a lot overcomplicated (and still would solve wxWidgets only while bakefile system is not wxWidgets-only). Any further other suggestion? I'm open to explanations which would lead us to succesfully supprt precompiled headers with DMC. ABX
Oct 11 2004
I don't understand why you cannot use a total2.h. It needn't be used for the builds with other compilers. A one line source file doesn't need much maintenance <g>. "W這dzimierz Skiba" <abx abx.art.pl> wrote in message news:ckdumc$1adm$1 digitaldaemon.com..."Walter" <newshound digitalmars.com> wrote in news:ckdhk2$vp7$1 digitaldaemon.com:systemWhy not make a total2.h that simply consists of: #include <total.h> and use that for the sym2 precompiled header?Because that would work for multilib version of the build while in monolithic build they still need to use the same header. Also we have well established convenience for building begining of cpp files. http://www.wxwidgets.org/standard.htm#pch #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif Above works with Open Watcom, VisualC, GCC, Borland. Changing it to anything more complicated would be hardly maintained and a lot overcomplicated (and still would solve wxWidgets only while bakefileis not wxWidgets-only). Any further other suggestion? I'm open to explanations which would lead us to succesfully supprt precompiled headers with DMC. ABX
Oct 14 2004
"Walter" <newshound digitalmars.com> wrote in news:ckm7hn$2n3n$1 digitaldaemon.com:I don't understand why you cannot use a total2.h. It needn't be used for the builds with other compilers. A one line source file doesn't need much maintenance <g>.Because: 1. There is about 10 libraries so there would be need for total0 ... total9 http://www.wxwidgets.org/manuals/2.5.3/wx_librarieslist.html 2. Bakefile is supposed to be universal tool and is not part of wxWidgets. While I can handle whatever within wxWidgets (as long as other developers agree with it) I cannot force all the projects on ther world to be changed in order to be supported by bakefiles. Bakefile has to be as simple as possible from point of view of the person expected to switch to it. If user says that lib1 has to use precompile header.h and lib2 has to use precompiled header.h too but with different compiler settings than bakefile has to find a way of translating it into native makefile/compiler syntax as perfect as possible. 3. It would make usage of wxWidgets hard from user point of view, because he would not know which header should he use in his own application to benefit from precompiled headers. 4. Additional header seems not necessary with subdirectory method described earlier. ABX
Oct 14 2004
Why don't you generate the precompiled header file with: dmc -cpp $(FLACS) -c -H -HD<precDir> -HO- -I... -HF.\<Output>\<precFile>.SYM -o.\<Output>\<precFile>.PCO <precFile>.h(pp) amd than use it on source files like: dmc $(FILE.cpp) -cpp -c -H -HD<OutputDir> -HO- -I... -o<OutputDir>\$(FILE).obj Just make sure that the first file included in the source files has the name of <precFile.h(pp) Jan W這dzimierz Skiba wrote:Hi! I'm trying to add precompiled headers support to the bakefiles ( http://bakefile.sourceforge.net/ ) where dmars makefile and smake are already supported. I have a couple of problems. One of the major packages supported is wxWidgets toolkit. The build system makes in one make a few libraries. They all share directory for objs, for libs for includes. They all use one common header. There is need for having separated precompiled headers for each lib achieved from the same header in the same directory. Do I understand correct from the online DMC site (the page which covers precompiled headers) that it's impossible because with -HF I can influence name of precompiled header file during writing only? If I fail to understand it or I miss some workaround, than I would appreciate any helpful comment added to this thread or directly to the patch entry in bakefile patch tracker. http://sourceforge.net/tracker/index.php?func=detail&aid=1043143&group_id=83016&atid=568031 http://sourceforge.net/tracker/index.php?func=detail&aid=1041456&group_id=9863&atid=309863 Thanks in advance for any help, ABX-- ManiaC++ Jan Knepper But as for me and my household, we shall use Mozilla... www.mozilla.org
Oct 11 2004
Jan Knepper <jan smartsoft.us> wrote in news:ckea3m$1l4g$1 digitaldaemon.com:Why don't you generate the precompiled header file with: dmc -cpp $(FLACS) -c -H -HD<precDir> -HO- -I... -HF.\<Output>\<precFile>.SYM -o.\<Output>\<precFile>.PCO <precFile>.h(pp)Because I can't find the reference to such usage in the DMC documentation. I know you have adviced this in the past too but still only the syntax I mentioned earlier was documented. Bakefile is supposed to exist for years, using hack for it risks that the reason for the hack will be forgotten without background in documentation and hard to maintain in case of necessary changes.amd than use it on source files like: dmc $(FILE.cpp) -cpp -c -H -HD<OutputDir> -HO- -I... -o<OutputDir>\$(FILE).objAnd moreover this makes the same problem, I do not see where I can select name of the *.sym file in case of a few *.sym files available in directory and all of them were made from the same .h file but with different flags of the compiler. I think the only way of workaround for it will be to use separated subdirectories for each of the sym files. ABX
Oct 12 2004
Because I can't find the reference to such usage in the DMC documentation. I know you have adviced this in the past too but still only the syntax I mentioned earlier was documented. Bakefile is supposed to exist for years, using hack for it risks that the reason for the hack will be forgotten without background in documentation and hard to maintain in case of necessary changes.This is how the IDDE does it... I think it will be supported as I do not expect that Walter wants to break communication with the IDDE at this moment. Also, documenting is should not just be a matter of the "tools" document, but also inside the Bakefile.And moreover this makes the same problem, I do not see where I can select name of the *.sym file in case of a few *.sym files available in directory and all of them were made from the same .h file but with different flags of the compiler.No it does not... The <Ouput> directory is the place where the intermediate files go for a certain build. A certain build uses particular flags which obviously generates difference code. So when invoking the compiler with difference flags and may be even difference #defined such as -D_DEBUG it might be a very good idea to write all output files into a separate directory and make sure the pre-compiled header is placed into this same directory and read from this directory.I think the only way of workaround for it will be to use separated subdirectories for each of the sym files.That's exactly what I am getting at, I would use that subdirectory for the complete compiler output of intermediate files such as .sym, .pco, .obj, etc. Jan -- ManiaC++ Jan Knepper But as for me and my household, we shall use Mozilla... www.mozilla.org
Oct 12 2004
Jan Knepper <jan smartsoft.us> wrote in news:ckgod3$o44$1 digitaldaemon.com:This is how the IDDE does it... I think it will be supported as I do not expect that Walter wants to break communication with the IDDE at this moment.I see, thanks.Also, documenting is should not just be a matter of the "tools" document, but also inside the Bakefile.I'm not sure I understand that part.But "certain build" of wxWidgets creates a few libraries and all of them have different flags passed to the same header. It is not only debug/unicode flags, but also about interfacing rest of files as being external vs. internal.And moreover this makes the same problem, I do not see where I can select name of the *.sym file in case of a few *.sym files available in directory and all of them were made from the same .h file but with different flags of the compiler.No it does not... The <Ouput> directory is the place where the intermediate files go for a certain build. A certain build uses particular flags which obviously generates difference code.Meantime I have updated patch tracker in bakefile with new (still incomplete) version of the patch witch should use documented part of precompiled headers usage and needs only further tweaking on bakefile side. Thanks for your support, ABXI think the only way of workaround for it will be to use separated subdirectories for each of the sym files.That's exactly what I am getting at, I would use that subdirectory for the complete compiler output of intermediate files such as .sym, .pco, .obj, etc.
Oct 12 2004
W這dzimierz Skiba wrote:Jan Knepper <jan smartsoft.us> wrote in news:ckea3m$1l4g$1 digitaldaemon.com:I've not had time to look at the patch yet, but I would have thought that <precfile>$(CORELIB).sym etc might be possible ? chrisWhy don't you generate the precompiled header file with: dmc -cpp $(FLACS) -c -H -HD<precDir> -HO- -I... -HF.\<Output>\<precFile>.SYM -o.\<Output>\<precFile>.PCO <precFile>.h(pp)
Oct 13 2004
chris elliott <biol75 york.ac.uk> wrote in news:ckimld$2ej9$1 digitaldaemon.com:I've not had time to look at the patch yet, but I would have thought that <precfile>$(CORELIB).sym etc might be possible ?Yes and no. Yes, it seems possible to put it int -HF during creation of .sym file. No, it seems not possible (as far as documented options are discussed) to put it into compiling of obj file that it should use <precfile>$(CORELIB).sym and not <precfile>$(ADVLIB).sym. Perhaps compiler is able to select it automagically but then what could be a key for this automagic if both .sym files were created from the same .h file. Anyway as I said I decided meantime to workaround it to use subdirectory in the form $(BUILDDIR)\$(CORELIB)\wxprec.sym and appropriate -HD flag. I only wait for Vaclav hints about other issues related to further development of it. ABX
Oct 13 2004
There's a new switch for this in the 8.42.1 beta. -Walter
Oct 22 2004
"Walter" <newshound digitalmars.com> wrote in news:clbl2s$nbi$4 digitaldaemon.com:There's a new switch for this in the 8.42.1 beta. -WalterThank you very much! I will test it ASAP. ABX
Oct 25 2004