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 19th June 2010 at http://forums.arm.com

    It's possible that AAA.pch does actually depend on the current directory or current source file directory.  Does aaa.h contain any #includes?

    Can you show the full command lines for the different compile steps?  Are there any differences besides the pch options and filenames?


    No, aaa.h contains only definitions

    So here again:
    The Files:
         /myproject/inc/aaa.h
         /myproject/src/AAA.c    (only contain 1 line: #include "aaa.h")
         /myproject/src/File1.c   (#include "aaa.h")
         /myproject/differentsrc/File2.c  (#include "aaa.h")

    /project/build/makefile
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --create_pch=../obj/AAA.pch ../src/AAA.c -o --/obj/AAA.o
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --use_pch=../obj/AAA.pch ../src/File1.c -o --/obj/File1.o
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --use_pch=../obj/AAA.pch ../differentsrc/File2.c -o --/obj/File2.o

    Only File1.c is compiled and use pch file.
    File2.c is compiled and but not using pch file. It gives me warnings:
    "no source": Warning:  #629-D: the command line options do not match those used when precompiled header file "../obj/AAA.pch" was created

    Even though, as you see above, the command line options match.


    Thank you,
    -Andreas
Reply
  • Note: This was originally posted on 19th June 2010 at http://forums.arm.com

    It's possible that AAA.pch does actually depend on the current directory or current source file directory.  Does aaa.h contain any #includes?

    Can you show the full command lines for the different compile steps?  Are there any differences besides the pch options and filenames?


    No, aaa.h contains only definitions

    So here again:
    The Files:
         /myproject/inc/aaa.h
         /myproject/src/AAA.c    (only contain 1 line: #include "aaa.h")
         /myproject/src/File1.c   (#include "aaa.h")
         /myproject/differentsrc/File2.c  (#include "aaa.h")

    /project/build/makefile
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --create_pch=../obj/AAA.pch ../src/AAA.c -o --/obj/AAA.o
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --use_pch=../obj/AAA.pch ../src/File1.c -o --/obj/File1.o
    armcc -c $(SOMEFLAGS) -I../inc -I../src -I../differentsrc --use_pch=../obj/AAA.pch ../differentsrc/File2.c -o --/obj/File2.o

    Only File1.c is compiled and use pch file.
    File2.c is compiled and but not using pch file. It gives me warnings:
    "no source": Warning:  #629-D: the command line options do not match those used when precompiled header file "../obj/AAA.pch" was created

    Even though, as you see above, the command line options match.


    Thank you,
    -Andreas
Children
No data