簡體   English   中英

讓不同的文件在 CMake 中使用不同的預編譯頭文件的最佳方法是什么?

[英]What is the best way to have different files use different precompiled headers in CMake?

我有一個編譯為可執行文件的大型測試套件,其結構大致如下:

ProjectRootDir
  |
  ---A -> .cpp/h files with a fairly common set of expensive includes
  |
  ---B -> .cpp/.h files with a fairly common but different set of expensive includes
  |
  (etc.)

使用預編譯頭文件大大減少了整個項目的編譯時間。 但是因為這是一個測試項目,這意味着包含的 pch 文件可以經常更改,理想情況下,我有一個用於“A”源文件的 pch,另一個用於“B”源文件的 pch,等等。為了防止重新編譯每次預編譯頭的子集更改時整個項目。 對於我真正想要驗證整個項目是否仍然可以編譯的更改。

在 CMake 中執行此操作的最佳方法是什么?

只需確保A中的源文件與B中的源文件屬於不同的目標。 如果還沒有,您可以使用OBJECT庫執行此操作:

add_library(A OBJECT ...)
target_precompile_headers(A PRIVATE expensive_header_a.h)

add_library(B OBJECT ...)
target_precompile_headers(B PRIVATE expensive_header_b.h)

add_library(combined ...)
target_link_libraries(combined PRIVATE A B)

現在, A中的源將獲得一個 PCH,其中包含expensive_header_a.h的 header_a.h ,對於B也是如此。 請參閱文檔: https://cmake.org/cmake/help/latest/command/target_precompile_headers.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM