【问题标题】:How to force cmake not to find mpicxx but only mpicc如何强制 cmake 不查找 mpicxx 而只查找 mpicc
【发布时间】:2014-03-05 08:15:03
【问题描述】:

我正在尝试使用 cmake 为 MPI 程序生成 Makefile。我遇到的问题是我只安装了 mpicc(工作正常) mpicxx 在 PATH 中,但来自其他安装(我的系统上安装了多个 MPI)。我不想使用 mpicxx,而只想使用 mpicc(以及 mpicc 的包含文件和库)。

Bellow 是一个有点硬编码的工作,它可以工作

    cmake_minimum_required(VERSION 2.8)

    PROJECT(mympihello)
    ADD_EXECUTABLE(hellompi hellompi.c)
    SET(CMAKE_C_COMPILER mpicc)
    target_link_libraries(hellompi /export/home2/SEECS/bibrak/work/programs/installs/mpich3/include)

以下是通用方式(据我所知),我想使用这种方法但强制不使用 mpicxx(找不到它,丢弃 mpicxx)

    cmake_minimum_required(VERSION 2.8)

    PROJECT(mympihello)
    ADD_EXECUTABLE(hellompi hellompi.c)

  # Require MPI for this project:
    find_package(MPI REQUIRED)
    set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
    set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})
    include_directories(MPI_INCLUDE_PATH)
    target_link_libraries(hellompi ${MPI_LIBRARIES})

此外,向我指出如何为使用 MPI 的此类程序生成 .so(共享库)将很有帮助。

谢谢

【问题讨论】:

    标签: makefile cmake mpi build-tools


    【解决方案1】:

    我是如何做到的。这是我使用 cmake 生成 .so(共享库)但仅使用 mpicc 而不是 mpicxx 的解决方案

        cmake_minimum_required(VERSION 2.8)
    
        project(projectname C)
    
        SET(    SOURCE_FILES
                sourcefile1.c
                sourcefile2.c
                sourcefile3.c
        )
    
        ADD_LIBRARY(projectname SHARED ${SOURCE_FILES})
        find_package(MPI)
        if(MPI_FOUND)
        set(CMAKE_C_COMPILE_FLAGS ${CMAKE_C_COMPILE_FLAGS} ${MPI_C_COMPILE_FLAGS})
        set(CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} ${MPI_C_LINK_FLAGS})
    
        include_directories(${MPI_C_INCLUDE_PATH})
        endif(MPI_FOUND)
        target_link_libraries(projectname ${MPI_C_LIBRARIES})
    

    这会生成一个创建 projectname.so 共享库的 Makefile。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多