Я хочу установить путь компилятора (например: icc
) автоматически в cmake, чтобы моя программа могла компилироваться на любом компьютере, если на нем установлен icc
, и нам не нужно заботиться о том, где находится *Установлено 1003 *.
Сначала я использовал следующую команду для установки компилятора.Все в порядке.
set(Intel_C_COMPILER "/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icc")
set(Intel_CXX_COMPILER "/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icpc")
set(CMAKE_C_COMPILER ${Intel_C_COMPILER} )
set(CMAKE_CXX_COMPILER ${Intel_CXX_COMPILER})
project(MyProject)
....
Затем я хочу установить путь к компилятору автоматически, я знаю, что следующая команда может найти путь к компилятору
which icc
Поэтому я пишу следующую команду:установить компилятор автоматически с помощью cmake.
execute_process(COMMAND which icc OUTPUT_VARIABLE Intel_C_COMPILER)
execute_process(COMMAND which icpc OUTPUT_VARIABLE Intel_CXX_COMPILER)
message(Intel_CXX_COMPILER: ${Intel_C_COMPILER})
message(Intel_CXX_COMPILER: ${Intel_CXX_COMPILER})
set(CMAKE_C_COMPILER ${Intel_C_COMPILER} )
set(CMAKE_CXX_COMPILER ${Intel_CXX_COMPILER})
project(MyProject)
....
В этом случае происходит нечто странное, cmake показывает, что:
Intel_CXX_COMPILER:/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icpc
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:27 (project): The CMAKE_C_COMPILER:
/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icc
is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the
environment variable "CC" or the CMake cache entry CMAKE_C_COMPILER
to the full path to the compiler, or to the compiler name if it is
in the PATH.
CMake Error at CMakeLists.txt:27 (project): The CMAKE_CXX_COMPILER:
/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icpc
is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the
environment variable "CXX" or the CMake cache entry
CMAKE_CXX_COMPILER to the full path to the compiler, or to the
compiler name if it is in the PATH.
-- Configuring incomplete, errors occurred!
CMake сказал, что путь не является полным путем к существующему компилятору, но, как показано в message
, именно там находится компилятор!
Я знаю, что есть другие методы, которые мы можем установить компилятором, например, экспортировать некоторые переменные окружения, чтобы помочь cmake найти путь, ноЯ хочу знать, почему мой метод дозы не работает?
Есть ли лучший способ справиться с этой проблемой?
Заранее спасибо.