非root安装PETSc后,如何使用CMake编译并链接?
使用CMake配置PETSc开发环境
方法1:使用PETSc官方CMake模块(推荐)
PETSc原生支持CMake,官方提供了现成的查找模块,配置流程如下:
确认PETSC_DIR路径
你的PETSc安装路径为/Users/userid/Downloads/petsc/build,可以将其设为环境变量方便CMake查找:export PETSC_DIR=/Users/userid/Downloads/petsc/build也可以将该命令添加到
~/.bashrc或~/.zshrc中,实现永久生效。编写CMakeLists.txt
以你的源文件为main.c为例,基础配置示例如下:cmake_minimum_required(VERSION 3.16) project(MyPETScProject C) # 查找PETSc包 find_package(PETSc REQUIRED) # 创建可执行文件 add_executable(my_app main.c) # 链接PETSc的编译规则与库文件 target_link_libraries(my_app PRIVATE PETSc::PETSc)编译项目
在项目根目录执行以下命令完成编译:mkdir build && cd build cmake .. make
方法2:手动导入PETSc编译/链接参数
如果需要更精细的控制,可以通过petsc-config工具提取参数,再在CMake中配置:
获取PETSc参数
在终端执行以下命令,分别得到编译和链接所需的参数:# 获取编译选项 petsc-config --cflags # 获取链接选项 petsc-config --libs编写CMakeLists.txt
将提取到的参数整合到配置文件中:cmake_minimum_required(VERSION 3.16) project(MyPETScProject C) # 调用petsc-config获取参数 execute_process( COMMAND petsc-config --cflags OUTPUT_VARIABLE PETSC_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE ) execute_process( COMMAND petsc-config --libs OUTPUT_VARIABLE PETSC_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE ) # 创建可执行文件并设置编译、链接规则 add_executable(my_app main.c) target_compile_options(my_app PRIVATE ${PETSC_CFLAGS}) target_link_libraries(my_app PRIVATE ${PETSC_LIBS})
验证配置
编译完成后,可通过以下命令测试程序运行:
# 单进程运行 ./my_app # 多进程运行(基于OpenMPI) mpiexec -n 2 ./my_app
内容的提问来源于stack exchange,提问作者Al-Farouq
相关产品推荐
相关产品推荐

