gpt4 book ai didi

c++ - 无法为基本 PETSc 程序生成 makefile

转载 作者:行者123 更新时间:2023-11-28 06:16:20 25 4
gpt4 key购买 nike

我有一个使用 PETSC 的非常基本的程序

 #include "PETSC/petsc.h"
#include "PETSC/petscsys.h"
#include "PETSC/petscmat.h"

int main(int argc, char *argv[]) {
PetscMPIInt rank,size;
PetscInitialize(&argc,&argv,0,0);
MPI_Comm_size(PETSC_COMM_WORLD,&size);
MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
PetscPrintf(PETSC_COMM_WORLD,"Number of processors = %d, rank = %d\n",size,rank);
PetscSynchronizedPrintf(PETSC_COMM_WORLD,"synchronized rank = %d\n",rank);

MPI_Barrier(PETSC_COMM_WORLD);
PetscFinalize();
return 0;
}

但是,当我尝试使用 mpic++ 进行编译时,出现了对 PETSC_COMM_WORLDPetscInitialize 和其他垃圾的 undefined reference 错误

我现在正在尝试使用 build 和 cmake。这是我对 CMakeLists

的尝试
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(checkMPI)

SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules")

set(PETSC_ARCH linux-gnu)
set(PETSC_DIR l${PROJECT_SOURCE_DIR}/third-party/petsc)

FIND_PACKAGE(PETSc REQUIRED)

INCLUDE_DIRECTORIES(${PETSC_INCLUDES})
ADD_DEFINITIONS(${PETSC_DEFINITIONS})

ADD_EXECUTABLE(checkMPI checkMPI.cpp)

TARGET_LINK_LIBRARIES(checkMPI ${PETSC_LIBRARIES})

另外,我有一个目录 cmake-modules 包含 PETSc 的 cmake-modules

但是,当我尝试通过键入 ccmake .. 然后 c 生成 makefile 时,我得到了输出

CMake Error at cmake-modules/FindPETSc.cmake:127 (message):
The pair PETSC_DIR=l/directory/HPC/third-party/petsc
PETSC_ARCH=linux-gnu do not specify a valid PETSc installation
Call Stack (most recent call first):
CMakeLists.txt:10 (FIND_PACKAGE)

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108
(message):
PETSc could not be found. Be sure to set PETSC_DIR and PETSC_ARCH.
(missing: PETSC_INCLUDES PETSC_LIBRARIES PETSC_EXECUTABLE_RUNS)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315

有人可以帮忙吗?

最佳答案

基于 FindPETSC.cmake PETSC_ARCH 的默认选项似乎是:

linux-gnu-c-debug 
linux-gnu-c-opt
x86_64-unknown-linux-gnu
i386-unknown-linux-gnu

或者您在 manual build 中使用的那个.

CMake 尝试查找文件 ${PETSC_DIR}/${PETSC_ARCH}/include/petscconf.h${PETSC_DIR}/bmake/${PETSC_ARCH}/petscconf.h

关于c++ - 无法为基本 PETSc 程序生成 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com