【发布时间】:2017-05-18 23:57:41
【问题描述】:
有没有办法在混合 C++ 和 Fortran 的同时使用 Clang 编译器?
直到现在我都在使用 cmake
project(mixing CXX Fortran)
但这会触发g++ 的使用。
-- CXX 编译器标识为 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 的,特别是您是如何指定工具链的吗?
-
@Frank 我使用构建文件夹中的命令
cmake ..。工具链是什么意思? -
如果您同时使用 gfortran 和 g++(不包括 clang++,这是一种合理的策略),您似乎应该允许 g++ 使用 -lstdc++。
-
问题here 中似乎有一个示例,它似乎显示了如何强制不同的编译器。
-
@d_1999 我现在通过
-DCMAKE_CXX_COMPILER=clang++强制 cmake 使用 clang++,现在它似乎工作正常。