2016-12-06 37 views
2

我爲我自己的C++項目使用了Buck,但我依賴於使用CMake構建的第三方庫。 CMake文件很複雜,所以我不認爲在Buck中重新創建它們的CMake文件是不現實的。相反,我想從巴克稱CMake。將CMake項目集成到Buck中的最佳方式是什麼?

什麼是從巴克打電話給CMake的最佳方式?

我應該如何構建我的項目以減少頭痛?

+1

您想構建CMake庫作爲構建過程的一部分嗎? – arrowd

+0

正確。我將源代碼作爲Git子模塊提取。 – sdgfsdh

+1

也許你可以嘗試一個genrule? https://buckbuild.com/rule/genrule.html – LavaScornedOven

回答

1

我的建議是使用genrule和prebuilt_cxx_library。

這是我使用googletest的BUCK學習項目。 https://github.com/ar90n/lab/tree/master/sandbox/buck-study/gtest

該項目包含兩個BUCK文件。 一個(./gtest/BUCK)用於獲取和構建googletest。 另一個(./BUCK)用於構建和運行測試程序。

如果要生成並運行此項目,請執行以下命令,

$ buck fetch //gtest:googletest-src 
$ buck build :sample1 
$ buck run :sample1 
+0

是的,這工作。對於Google測試,這裏有一個正確的BUCK文件https://github.com/njlr/googletest/blob/a9384dbf3d795e730f942b468dae38158e6be863/BUCK – sdgfsdh

0

CMake的調用將打破reproducubility,所以它是不是最好的方法。相反,嘗試以下操作:

  1. 叉與CMake的
  2. 建立
  3. 呼叫CMake的生成任何頭文件
  4. 保存的頭文件的某處項目(如/cmake-generated
  5. 創建標題項目 - 僅由CMake生成的頭文件庫
  6. 用Buck構建項目的其餘部分,具體取決於CMake庫
  7. 將所有內容都提交給Git
  8. 對您需要的每個目標重複步驟2

這不如巴克真正的端口,但您獲得了一次性手動步驟的大部分好處。

相關問題