У меня (в основном) успешно настроен ExternalProject_Add для googletest. Тем не менее, я заметил, что такие вещи, как мой выбор компилятора С++, тип сборки и т.д., Автоматически не перенаправляются в ExternalProject.
Я могу легко добавить любой заданный флаг, добавив его в CMAKE_ARGS в вызове ExternalProject_Add следующим образом:
CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
Однако для этого требуется, чтобы я перечислял все возможные аргументы, которые должны быть перенаправлены на googleests вызов CMake, и этот список довольно огромен. Мне также нужно будет создать тот же список для каждого другого внешнего приложения, которое я хотел. Это кажется хрупким и подверженным ошибкам.
Есть ли способ сказать 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>
идеально подойдет.
Любые мысли о том, как это сделать?