Add option to force project references export#220
Add option to force project references export#220ShawnCZek wants to merge 4 commits intoubisoft:mainfrom
Conversation
|
Hi, We will take a look at this MR soon. |
|
@jspelletier is this related to #146? it's the same config option |
|
@ShawnCZek could you add/modify some sample using this? |
|
@jspelletier I can take a look at trying to integrate this into existing samples. However, as pointed out earlier here, #253 basically collides with this PR. And if that one is merged, this can be closed. |
|
@ShawnCZek The problem with #253 is it doesn't have an explicit option and will affect our existing generated files so it won't ever be merged in its current state, |
|
Perfect. Thank you for the answer! In the following days, I will take a look at modifying the existing samples to integrate this change. Once that is done, I will mention you here again. |
Disabling the project references forced export makes the solution fail to compile because of the shared precompiled header dependency.
|
@jspelletier Sorry for the "slight" delay. I completely forgot about this issue and just noticed it when I was upgrading our version of Sharpmake. Anyway, I created a pretty robust example: 027386d I copied our solution for using precompiled shared headers; this is useful for speeding up the build time when there are many projects (tens/hundreds) with many shared dependencies (Windows header file, external libraries, etc.). I am aware that this is a pretty niche use case, but it is the only sample where such an export is applicable, of which I can think of. The above mentioned C++20 modules might be a more appealing use case, but as I have never used them, coming up with a helpful sample is challenging for me. Btw. I am not sure why the HelloClangCI sample is failing, but it does not seem to be connected to this PR. |
Similarly to #219, I am working on sharing the precompiled header between multiple projects. To make this possible, the other projects must be exported as a reference. MSVC does otherwise not wait for the compilation to finish.
Right now, project references are not exported for static libraries. And while
ExportAdditionalLibrariesEvenForStaticLibexists as a configuration option, it does more things at once, often resulting inalready defined in X.lib(X.dll); second definition ignoredwarnings.Therefore, this pull request adds an option to force the export of these references regardless of the output type of the project.