Как можно перенаправить аргументы CMake в ExternalProject

Я (в основном )успешно настроил ExternalProject _Добавить для googletest. Однако я заметил, что такие вещи, как мой выбор компилятора C++, типа сборки и т. д., не перенаправляются автоматически в ExternalProject.

Я могу легко добавить любой заданный флаг, добавив его в CMAKE _ARGS при вызове ExternalProject _Добавить так:

CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}

Однако для этого требуется, чтобы я перечислил все возможные аргументы, которые должны быть перенаправлены в вызов CMake googletests, и этот список довольно огромен. Мне также нужно будет создать такой же список для каждого другого внешнего проекта _, который я хочу добавить. Это кажется хрупким и подверженным ошибкам.

Есть ли способ сообщить CMake «переслать» конфигурацию, предоставленную пользователем? Другими словами, если бы я вызывал CMake как:

cmake <path-to-project> -DCMAKE_C_COMPILER=/usr/bin/clang -DSOME_RANDOM_FLAG=stuff

Затем я хотел бы, чтобы мой вызов ExternalProject _Add предоставил тот же выбор компилятора и значение для SOME_RANDOM_FLAG, без необходимости явно перечислять эти имена. Я не уверен, что простая передача CMake ARGV сработает, так как

CC=/usr/bin/clang cmake <path-to-project>

в идеале тоже будет работать.

Любые мысли о том, как это сделать?

15
задан thiagowfx 16 January 2017 в 23:03
поделиться