2015-09-23 2 views
1

Я пытался использовать ExternalProject модуль:Forwarding текущий компилятор ExternalProject

ExternalProject_Add(googlebenchmark 
       GIT_REPOSITORY "https://github.com/google/benchmark.git" 
       TLS_VERIFY ON 
       CMAKE_CACHE_DEFAULT_ARGS -DBENCHMARK_ENABLE_TESTING:BOOL=OFF 
       SOURCE_DIR "${CMAKE_BINARY_DIR}/third_party/gbenchmark" 
       INSTALL_DIR "${CMAKE_BINARY_DIR}/third_party")` 

И есть вопрос, который я придумал: этот модуль по какой-то причине не пересылает компилятор, используемый в формуле (родительский) cmake, а также CMAKE_BUILD_TYPE.

Я попытался использовать CMAKE_CACHE_DEFAULT_ARGS, чтобы установить CMAKE_CXX_COMPILER напрямую, но это не помогло.

Есть ли достойное объяснение этому поведению? Есть ли подходящий способ (cmake-ish) для пересылки текущей используемой конфигурации компилятора/сборки в ExternalProject?

ответ

3

Направить компилятор использовать ExternalProject аргумент CMAKE_CACHE_ARGS, т.е .:

ExternalProject_Add(googlebenchmark 
... 
CMAKE_CACHE_ARGS "-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}" "-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}" 
) 
+0

Ой, спасибо большое! Фактически, ExternalProject использует Regexps для анализа параметров для параметров, поэтому вам нужно добавить тип для этих переменных (FILENAME). – MPogoda

+0

Спасибо за подсказку с типами. Правильный тип - фактически 'FILEPATH'. – sakra