我爲我自己的C++項目使用了Buck,但我依賴於使用CMake構建的第三方庫。 CMake文件很複雜,所以我不認爲在Buck中重新創建它們的CMake文件是不現實的。相反,我想從巴克稱CMake。將CMake項目集成到Buck中的最佳方式是什麼?
什麼是從巴克打電話給CMake的最佳方式?
我應該如何構建我的項目以減少頭痛?
我爲我自己的C++項目使用了Buck,但我依賴於使用CMake構建的第三方庫。 CMake文件很複雜,所以我不認爲在Buck中重新創建它們的CMake文件是不現實的。相反,我想從巴克稱CMake。將CMake項目集成到Buck中的最佳方式是什麼?
什麼是從巴克打電話給CMake的最佳方式?
我應該如何構建我的項目以減少頭痛?
我的建議是使用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
是的,這工作。對於Google測試,這裏有一個正確的BUCK文件https://github.com/njlr/googletest/blob/a9384dbf3d795e730f942b468dae38158e6be863/BUCK – sdgfsdh
CMake的調用將打破reproducubility,所以它是不是最好的方法。相反,嘗試以下操作:
/cmake-generated
)這不如巴克真正的端口,但您獲得了一次性手動步驟的大部分好處。
您想構建CMake庫作爲構建過程的一部分嗎? – arrowd
正確。我將源代碼作爲Git子模塊提取。 – sdgfsdh
也許你可以嘗試一個genrule? https://buckbuild.com/rule/genrule.html – LavaScornedOven