“第10届量子化学波函数分析与Multiwfn程序培训班将于5月4-8日于北京举办,这是一次性完整、系统学习波函数分析的各种理论知识和全面掌握强大的Multiwfn波函数分析程序使用的最不可错过的机会!请点击此链接查看详情和报名方式,欢迎参加!

“第18届北京科音分子动力学与GROMACS培训班” 将于5月23-26日于北京举办。这是一次性全面、系统学习分子动力学模拟知识和最流行的分子动力学程序GROMACS的关键机会!报名正在进行中,请点击此链接查看详情,欢迎参加!

计算化学公社

 找回密码 Forget password
 注册 Register
楼主 Author: UW_0728.
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] 利用cmake编译和安装CP2K

[复制链接 Copy URL]

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

46#
 楼主 Author| 发表于 Post on 2026-2-21 18:21:33 | 只看该作者 Only view this author
HNUST 发表于 2026-2-21 18:12
elpa,HDF5总是出错,哎真是服了,关闭以后,cmake的时候又跳出来报错。我甚至把系统带的cmake都删了,全都 ...

先看:
在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚
http://sobereva.com/620http://bbs.keinsci.com/thread-25787-1-1.html

1. ELPA和HDF5在安装时报错的原因是什么?最好仔细查看并附上相应的日志文件。
2. 你的cmake指令是什么?
Failed to load the content due to unknown reasons.

63

帖子

0

威望

812

eV
积分
875

Level 4 (黑子)

47#
发表于 Post on 2026-2-21 23:00:21 | 只看该作者 Only view this author
UW_0728. 发表于 2026-2-21 18:21
先看:
在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚
http://sobereva.com/62 ...

已经搞定了,我把自己的cmake、openmpi、fftw、mkl之类的bashrc全注释掉才行。虽然我的版本跟cp2k要求的基本一样,但是就是不行。报错基本与cmake、gfortran有关,高了半天没搞定,哎,注释完以后,一点问题都没有,一遍过

1295

帖子

6

威望

2756

eV
积分
4171

Level 6 (一方通行)

傻傻的木瓜

48#
发表于 Post on 2026-3-11 12:31:51 | 只看该作者 Only view this author
我想问个小问题。上周PR #4865在更新toolchain里的libint到2.13.1版的同时也新增了系统包管理器安装boost和eigen3依赖的要求,这点也在您的博文里提到了。若在Rocky Linux 10.1用dnf,那应该从哪个repo或者channel找eigen3-devel呢?我现在无法直接找到eigen3-devel,搜eigen的唯一结果也似乎不对:
  1. $ dnf repolist
  2. repo id                                             repo name
  3. appstream                                           Rocky Linux 10 - AppStream
  4. baseos                                              Rocky Linux 10 - BaseOS
  5. epel                                                Extra Packages for Enterprise Linux 10 - x86_64
  6. extras                                              Rocky Linux 10 - Extras
  7. $ dnf search eigen3-devel
  8. Last metadata expiration check: 18:47:56 ago on Tue 10 Mar 2026 05:30:42 PM CST.
  9. No matches found.
  10. $ dnf search eigen
  11. ========================================================== Summary Matched: eigen ===========================================================
  12. arpack.x86_64 : Fortran 77 subroutines for solving large scale eigenvalue problems
  13. $
复制代码
√546=23.36664289109

2431

帖子

1

威望

6259

eV
积分
8710

Level 6 (一方通行)

49#
发表于 Post on 2026-3-11 13:15:40 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2026-3-11 12:31
我想问个小问题。上周PR #4865在更新toolchain里的libint到2.13.1版的同时也新增了系统包管理器安装boost和 ...

Enable repo, crb.
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

50#
 楼主 Author| 发表于 Post on 2026-3-11 14:54:06 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-3-11 15:00 编辑
Uus/pMeC6H4-/キ 发表于 2026-3-11 12:31
我想问个小问题。上周PR #4865在更新toolchain里的libint到2.13.1版的同时也新增了系统包管理器安装boost和 ...

dnf config-manager --set-enabled crb

这个建议随同EPEL一起默认开启,用处不小(而且我记得安装epel-release后默认就会附带启用crb的建议和指令)

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
Uus/pMeC6H4-/キ + 1 谢谢

查看全部评分 View all ratings

Failed to load the content due to unknown reasons.

1295

帖子

6

威望

2756

eV
积分
4171

Level 6 (一方通行)

傻傻的木瓜

51#
发表于 Post on 2026-3-27 00:48:50 | 只看该作者 Only view this author
现行的 CMake 系统如何同时构建动态库链接的 libcp2k.so 和静态库链接的 libcp2k.a 呢?我的猜想是在跑完 toolchain 以后到 CP2K 主目录下分几步执行:
  1. # shared library libcp2k.so
  2. cmake -S . -B ./build-shared -DCMAKE_INSTALL_PREFIX=./install-shared {...other cmake options...}
  3. cmake --build build-shared --target install -j
  4. # static library libcp2k.a
  5. cmake -S . -B ./build-static -DCMAKE_INSTALL_PREFIX=./install-static -DBUILD_SHARED_LIBS=OFF {...other cmake options...}
  6. cmake --build build-static --target install -j
复制代码

目前的 generate_cmake_options.sh 生成的 $CP2K_CMAKE_OPTIONS 包括了 -DCMAKE_INSTALL_PREFIX=./install 选项,但我不确定两次都用同一个 install 的目录会不会冲突,所以才有这个问题。最好能在自动生成的安装指南里讲清楚这点。

(顺便,安装/链接了 Ninja 后编译选项里是否启用 -GNinja 带来的 makefile 的区别也应该有解释。)
√546=23.36664289109

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

52#
 楼主 Author| 发表于 Post on 2026-3-27 05:37:56 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2026-3-27 00:48
现行的 CMake 系统如何同时构建动态库链接的 libcp2k.so 和静态库链接的 libcp2k.a 呢?我的猜想是在跑完 t ...

1. 是的,动态库和静态库不能同时构建。最好是分两个构建目录,不过即使在相同build目录也不会导致冲突,只是会把之前的BUILD_SHARED_LIBS选项设置覆盖掉而已;install目录应该分开,否则后面构建的会把前面构建的完全覆盖掉,达不成“同时构建动态库链接的 libcp2k.so 和静态库链接的 libcp2k.a”的目的(虽然我也不知道这个意义在哪里)。
2. cmake --build 指令是属于CMake自己的,对于任何generator生成的构建文件都适用,在构建阶段用了-G Ninja只是意味着不能直接在build目录下直接用make/gmake指令了,这两个生成器生成的东西除了组织架构上也没啥区别。
Failed to load the content due to unknown reasons.

1295

帖子

6

威望

2756

eV
积分
4171

Level 6 (一方通行)

傻傻的木瓜

53#
发表于 Post on 2026-3-27 10:16:52 | 只看该作者 Only view this author
UW_0728. 发表于 2026-3-27 05:37
1. 是的,动态库和静态库不能同时构建。最好是分两个构建目录,不过即使在相同build目录也不会导致冲突, ...

1. 同时有用 CP2K 本身跑单独的 DFT 任务(所以需要 libcp2k.so )和链接 GROMACS 跑 QM/MM 任务(所以需要 libcp2k.a)的需求是什么很奇怪的事情吗?当然如果 libcp2k.a 的版本也能像 libcp2k.so 的版本那样直接跑是更好的,可以省一次编译,但是我不知道是不是真能这样。我觉得您可以开 PR 把这个问题在 generate_cmake_options.sh 末尾生成的安装指南里说说。
2. 基于 Spack 的 make_cp2k.sh 的 CMake 指令默认都要用 -GNinja 这点,应当在 make_cp2k.sh 的帮助语句或者注释里说明缘故。目前在 toolchain 里面并没有哪个依赖库是只有 CMake 及 GNU Make 就不能编译、必须要使用 CMake 带 Ninja 的,哪怕官网号称要求 Ninja 的 tblite 也是,之前我测试 tblite 离线安装时没用 Ninja 也照样能编译通过、获得二进制可执行文件。
√546=23.36664289109

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

54#
 楼主 Author| 发表于 Post on 2026-3-27 10:35:26 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-3-27 10:38 编辑
Uus/pMeC6H4-/キ 发表于 2026-3-27 10:16
1. 同时有用 CP2K 本身跑单独的 DFT 任务(所以需要 libcp2k.so )和链接 GROMACS 跑 QM/MM 任务(所以需 ...

直接全用静态版(链接.a的)就可以吧,不应该有问题。当然,我会在说明中补充静态链接这一点(尽管我觉得直接在手册中相应部分补充说明会更好)。
Ninja我计划将来如果要砍toolchain的话会把它砍掉,因为它当时被加进去的唯一原因就是dftd4“需要”ninja,但现在看来实际上根本用不到。至于为什么在Spack里面专门要用-G Ninja,我也不清楚。
Failed to load the content due to unknown reasons.

1295

帖子

6

威望

2756

eV
积分
4171

Level 6 (一方通行)

傻傻的木瓜

55#
发表于 Post on 2026-3-31 10:44:20 | 只看该作者 Only view this author
UW_0728. 发表于 2026-3-27 05:37
1. 是的,动态库和静态库不能同时构建。最好是分两个构建目录,不过即使在相同build目录也不会导致冲突, ...

cmake里面install目录具体是以-DCMAKE_INSTALL_PREFIX选项为准,还是以--target install设置的为准,特别是二者不同的情况下?
cmake --build build --target install(目前开发版本推荐的指令)和cmake --install install有什么区别?
√546=23.36664289109

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

56#
 楼主 Author| 发表于 Post on 2026-3-31 11:02:25 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-3-31 11:07 编辑

对于同一个构建流程,--target install安装到的地方就是CMAKE_INSTALL_PREFIX设置的地方,两者毫无区别,所以要换install目录要么重运行一遍cmake(但是接下来应该不会再经历后面长时间的编译流程,而是只影响安装部分,因为只有CMAKE_INSTALL_PREFIX这一个选项被覆盖了),要么临时设置新的环境变量,比如运行"CMAKE_INSTALL_PREFIX=./install cmake --install build"(纠正:这里不应该跟install,而是build,从构建目录安装)。

"cmake --build build --target install"相当于是"cmake --build build"和"cmake --install build"合二为一;后者只是把构建好的东西安装在指定目录下,无法执行build操作。这与"make install"的情况确实不同,"make install"在cmake下严格等价于"cmake --build . --target install",同理"make clean"就是"cmake --build . --target clean"。
Failed to load the content due to unknown reasons.

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

57#
 楼主 Author| 发表于 Post on 2026-3-31 11:07:52 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2026-3-31 10:44
cmake里面install目录具体是以-DCMAKE_INSTALL_PREFIX选项为准,还是以--target install设置的为准,特别 ...

对于同一个构建流程,--target install安装到的地方就是CMAKE_INSTALL_PREFIX设置的地方,两者毫无区别,所以要换install目录要么重运行一遍cmake(但是接下来应该不会再经历后面长时间的编译流程,而是只影响安装部分,因为只有CMAKE_INSTALL_PREFIX这一个选项被覆盖了),要么临时设置新的环境变量,比如运行"CMAKE_INSTALL_PREFIX=./install cmake --install build"(纠正:这里不应该跟install,而是build,从构建目录安装)。

"cmake --build build --target install"相当于是"cmake --build build"和"cmake --install build"合二为一;后者只是把构建好的东西安装在指定目录下,无法执行build操作。这与"make install"的情况确实不同,"make install"在cmake下严格等价于"cmake --build . --target install",同理"make clean"就是"cmake --build . --target clean"。
Failed to load the content due to unknown reasons.

1295

帖子

6

威望

2756

eV
积分
4171

Level 6 (一方通行)

傻傻的木瓜

58#
发表于 Post on 2026-3-31 11:41:50 | 只看该作者 Only view this author
UW_0728. 发表于 2026-3-31 11:07
对于同一个构建流程,--target install安装到的地方就是CMAKE_INSTALL_PREFIX设置的地方,两者毫无区别, ...

明白了,这样现行开发版建议的 cmake 指令确实是比较省事的。(发帖发重了哦)之前 @乐平 提的https://github.com/cp2k/cp2k/issues/4705应该已经解决、可以关闭了。

还有一个小问题,如果已经编译安装了一次CP2K的二进制可执行文件,然后修改了./src里的fortran源代码,有没有比“用整套源代码文件在不冲突的目录下从头跑完整的build和install流程”更短的编译安装方式来做测试?
√546=23.36664289109

187

帖子

1

威望

632

eV
积分
839

Level 4 (黑子)

59#
 楼主 Author| 发表于 Post on 2026-3-31 12:16:39 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2026-3-31 11:41
明白了,这样现行开发版建议的 cmake 指令确实是比较省事的。(发帖发重了哦)之前 @乐平 提的https://gi ...

直接进入build目录,加载好该有的环境,运行make install即可。构建系统会自动检查哪些代码发生了变化,然后只重新编译那些代码与可能受相关改动影响的另外几个代码。

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
Uus/pMeC6H4-/キ + 1 谢谢分享

查看全部评分 View all ratings

Failed to load the content due to unknown reasons.

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-4-13 16:00 , Processed in 0.368370 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list