Я использую Buck для моего собственного C ++ проекта, но я зависим от сторонней библиотеки, созданной с использованием CMake. Файл CMake является сложным, поэтому я не думаю, что целесообразно воссоздавать их файл CMake в Buck. Вместо этого я хотел бы позвонить CMake от Buck.
Как лучше всего позвонить в CMake из Buck?
Как я должен структурировать свой проект, чтобы минимизировать головные боли?
Мое предложение заключается в использовании genrule и prebuilt_cxx_library.
Это мой учебный проект Бак с использованием Google Test:
https://github.com/ar90n/lab/tree/master/sandbox/buck-study/gtest
Этот проект содержит два файла Buck. Тот самый (./gtest/BUCK
) предназначен для получения и построения Google Test. Другой (./BUCK
) предназначен для сборки и запуска тестовых программ.
Если вы хотите собрать и запустить этот проект, выполните следующие команды:
$ buck fetch //gtest:googletest-src
$ buck build :sample1
$ buck run :sample1
Вызов CMake нарушит воспроизводимость, поэтому это не лучший подход. Вместо этого попробуйте следующее:
/cmake-generated
).Это не так хорошо, как настоящий порт для Buck, но вы получаете большую часть преимуществ за одноразовый ручной шаг.