开发者

Precompiled headers question

开发者 https://www.devze.com 2023-01-04 01:06 出处:网络
I am right now reorganizing my project and what recently was a simple application now became a pair of C++ projects - static library and real application.

I am right now reorganizing my project and what recently was a simple application now became a pair of C++ projects - static library and real application.

I would like to share one precompiled header between two projects, but face some troubles with setting up the .pdb file paths.

Assume my first project is called Library and builds it's .lib file with a corresponding Library.pdb file. Now, the second project is called Application and builds everything into the same folder (.exe and another Application.pdb file).

Right now my both projects create their own precompiled headers file (Library.pch and Application.pch) based on one actual header file. It works, but I think it's a waste of time and I also think there should be a way to share one precompiled header between two projects.

If in my Application project I try to set the Use Precompiled Header (/Yu) opti开发者_运维技巧on and set it to Library.pch, it wouldn't work, because of the following error:

error C2858: command-line option 'program database name "Application.pdb" inconsistent with precompiled header, which used "Library.pdb".

So, does anyone know some trick or way to share one precompiled header between two projects preserving proper debug information?


The question is, why do you want to share the precompiled header (PCH) files. Generally I woul d say, that does not make sense. PCH are used to speed up compiling not to share any information between different projects.

Since you also write about the PDB file, you probably want to debug the library code with your applications. This can be achieved by setting the /Fd parameter when compiling the library. When you link the library in your application and the linker finds the corresponding PDB file, you get full debug support.


This sounds complicated and cumbersome to set up. More than that, it may not be possible at all.

Instead, you can include the precompiled header from one application into the second. It will still be compiled once for the second project, but maintenance becomes easy and you do not have to redefine the dependencies in the second project (just include them).

0

精彩评论

暂无评论...
验证码 换一张
取 消