Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 如何强制cmake不查找mpicxx而只查找mpicc_Makefile_Cmake_Mpi_Build Tools - Fatal编程技术网

Makefile 如何强制cmake不查找mpicxx而只查找mpicc

Makefile 如何强制cmake不查找mpicxx而只查找mpicc,makefile,cmake,mpi,build-tools,Makefile,Cmake,Mpi,Build Tools,我正在尝试使用cmake为MPI程序生成Makefile。我的问题是,我只安装了mpicc(工作正常)。mpicxx位于路径中,但来自其他安装(我的系统上安装了多个MPI)。我不想使用mpicxx,只想使用mpicc(以及mpicc的包含文件和库) 贝娄是一个有点硬编码的努力,它的工作 cmake_minimum_required(VERSION 2.8) PROJECT(mympihello) ADD_EXECUTABLE(hellompi hellompi.c)

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

贝娄是一个有点硬编码的努力,它的工作

    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)

此外,向我介绍如何为使用MPI的此类程序生成.so(共享库)也会很有帮助


谢谢你告诉我我是怎么做到的。下面是我使用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

    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})