This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Precompiled Header

Note: This was originally posted on 8th June 2010 at http://forums.arm.com

Problem:
I've been trying to utilize precompiled header option, but with no luck. Even after installing patch 771 for RVCT 4.0.

Here what I'm trying to do.
Assume I have 3 source files and 1 header:

0. /myproject/inc/aaa.h
-----------------------------------
// a bunch of definitions


1. /myproject/src/AAA.c  (created this file to include only the header file and compiled with --create_pch=AAA.pch)
------------------------------
#include "aaa.h"  // this is a very large file
//eof

2. /myproject/src/File1.c (compiled with --use_pch=AAA.pch)
---------------------------------
#include "aaa.h"

// some codes


3. /myproject/differentsrc/File2.c (compiled with --use_pch==AAA.pch)
---------------------------------
#include "aaa.h"

// some codes


So the problem:
File1.c is using AAA.pch and compiled in a snap without any problem.

But File2.c can't use AAA.pch and does a regular compile (long compile). It gives warning:
"no source": Warning:  #629-D: the command line options do not match those used when precompiled header file "AAA.pch" was created

Questions:
- Is this a limitation for the precompiled header option? Files must be in the same directory.
- Are there any other options on how to solve this?

Thank you,
-a
Parents
  • Note: This was originally posted on 21st June 2010 at http://forums.arm.com

    The compiler by default will put the "current place" (the place where the current file is) as the first item on the include path.
    This means the #include "aaa.h" will look first in the same directory as the source, so the PCH is sensitive to the location
    of that directory (even though the include file wasn't actually found there).

    You can use --sys_include to stop putting the "current place" on the include path.  That should make this build reuse PCH.
Reply
  • Note: This was originally posted on 21st June 2010 at http://forums.arm.com

    The compiler by default will put the "current place" (the place where the current file is) as the first item on the include path.
    This means the #include "aaa.h" will look first in the same directory as the source, so the PCH is sensitive to the location
    of that directory (even though the include file wasn't actually found there).

    You can use --sys_include to stop putting the "current place" on the include path.  That should make this build reuse PCH.
Children
No data