CMake находит Intel C ++, Fortran, но не C, ar, ld - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь заставить мой проект CMake работать только с компиляторами Intel. Я запустил из этой темы , и теперь у меня есть CMakeLists.txt файл, который half работает:

cmake_minimum_required(VERSION 3.14)
project(oo Fortran)

enable_language(Fortran)
enable_language(C)

find_program(CMAKE_Fortran_COMPILER NAMES ifort)
find_program(CMAKE_C_COMPILER NAMES icc)
find_program(CMAKE_CXX_COMPILER NAMES icpc)
find_program(CMAKE_AR NAMES xiar)
find_program(CMAKE_LINKER NAMES xild)

if (CMAKE_Fortran_COMPILER MATCHES CMAKE_Fortran_COMPILER-NOTFOUND OR
    CMAKE_C_COMPILER MATCHES CMAKE_C_COMPILER-NOTFOUND OR
    CMAKE_CXX_COMPILER MATCHES CMAKE_CXX_COMPILER-NOTFOUND OR
    CMAKE_AR MATCHES CMAKE_AR-NOTFOUND OR
    CMAKE_LINKER MATCHES CMAKE_LINKER-NOTFOUND)
    message(FATAL_ERROR "Cannot find Intel compiler.  You may need to run `. /opt/intel/bin/compilervars.sh intel64'")
endif ()

message(">>>>> ${CMAKE_C_COMPILER}")
message(">>>>> ${CMAKE_CXX_COMPILER}")
message(">>>>> ${CMAKE_Fortran_COMPILER}")
message(">>>>> ${CMAKE_AR}")
message(">>>>> ${CMAKE_LINKER}")

set(dialect "-w -qopenmp -stand f18 -free -u -qopenmp-simd -qopt-report=5 -mavx -arch AVX")
set(bounds "-w -qopenmp -check bounds")
set(symbols "-debug full")

set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${dialect} ${bounds} ${symbols}")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${dialect}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

add_executable(oo animal_module.f90 cat_module.f90 main.f90)
set_property(TARGET oo PROPERTY LINKER_LANGUAGE Fortran)

Проблема в том, что он правильно находит IntelКомпилятор C ++, компилятор Fortran, но не другие параметры , которые я запрашивал (C, компоновщик, ассемблер), и они установлены на Apple, как вы можете видеть из вывода:

/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/sensei/Documents/Projects/oo
-- The Fortran compiler identification is Intel 19.0.4.20190416
-- Check for working Fortran compiler: /usr/local/bin/ifort
-- Check for working Fortran compiler: /usr/local/bin/ifort  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/local/bin/ifort supports Fortran 90
-- Checking whether /usr/local/bin/ifort supports Fortran 90 -- yes
-- The C compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
>>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
>>>>> /usr/local/bin/icpc
>>>>> /usr/local/bin/ifort
>>>>> /usr/bin/ar
>>>>> /usr/bin/ld
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/sensei/Documents/Projects/oo/cmake-build-debug

[Finished]

Конечно, это как из командной строки, так и из CLion, я также читал о CMAKE_FORCE_C_COMPILER и подобных, но они устарели .

Любая подсказка, почему это такпроисходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...