c++ - 混合 C++ 和 Fortran

标签 c++ cmake fortran clang

有没有办法在混合使用 C++ 和 Fortran 的同时使用 Clang 编译器?

直到现在我都使用 cmake

project(mixing CXX Fortran)

但这会触发 g++ 的使用。

-- The CXX compiler identification is GNU 6.2.0

我的项目的 CMakeLists.txt 与 Fortran 混合:

cmake_minimum_required(VERSION 3.7.0)
project(mixing CXX Fortran)

# SET UP ROOT https://root.cern.ch/how/integrate-root-my-project-cmake
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /opt/local/libexec/root6/etc/root/cmake)
find_package(ROOT REQUIRED COMPONENTS MATH MINUIT2)
include(${ROOT_USE_FILE})

include_directories(Experiment Theory ${ROOT_INCLUDE_DIRS})

add_executable(mixing main.cpp)

target_link_libraries(mixing ${ROOT_LIBRARIES})

不工作,因为 g++ 无法使用 ROOT 库所需的 Clang 标志 -stdlib=libc++

最佳答案

您始终可以通过更改 CMAKE_<LANG>_COMPILER 来覆盖 c/c++ 编译器,其中 在您的情况下是 C 或 CXX。

  1. 您可以设置您的 CCCXX 环境变量来覆盖 CMAKE_C_COMPILER/CMAKE_CXX_COMPILER 的默认值:

CC=clang CXX=clang++ cmake

  1. 您可以在调用 cmake 时在命令行上设置这些:

cmake -D CMAKE_C_COMPILER=clang -D CMAKE_CXX_COMPILER=clang++

  1. 您也可以直接在您的 cmake 文件中设置这些:

设置(CMAKE_C_COMPILER clang) 设置(CMAKE_CXX_COMPILER clang++)

但是请确保在使用任何 project/enable_language 指令之前在 cmake 文件的最顶部执行此操作。

关于c++ - 混合 C++ 和 Fortran,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468128/

相关文章:

xcode - 如何使用 CMake 在 "Other linker flags"中设置库?

c++ - 在使用库和 CMake 时遇到问题

fortran - 用双冒号声明变量时有区别吗

c++ - 从指针或指针链(对象指针、模板)复制数据

c++ - 堆栈是如何组织的? : Deleting a Binary Tree

c++ - 在 Linux 上使用 g++ 运行 clang scan-build

c++ - 使用openGL的glBindFramebuffer好像没有效果

c++ - 为什么 link_libraries(stdc++fs) 有效但 -lstdc++fs 无效?

Fortran 2003 不允许此内部过程 [BESSEL_J0]

java - 正在寻找计算大型矩阵并输出它们的最快方法?