计算化学公社

标题: CP2K-2025.2中ninja库和dftd4库的离线补丁版 [打印本页]

作者
Author:
gsbear    时间: 2025-9-8 14:23
标题: CP2K-2025.2中ninja库和dftd4库的离线补丁版
本帖最后由 gsbear 于 2025-9-8 16:02 编辑

ninjia-v1.13.1打入googletest-1.16.0离线代码
dftd4-3.7.0打入mctc-lib-0.3.2、mstore-0.3.0、multicharge-0.3.0三个离线库代码


因为我的cp2k-2025.2toolchain的第三方库还没下载完,所以以上两个包是否有问题还没测试过,如果使用有问题的同学请留言。



(测试发现dftd4-3.7.0打补丁时候有个小bug,已修正,现已在CP2K-2025.2的toolchain下编译通过)

作者
Author:
gsbear    时间: 2025-9-8 16:22
补丁记录:记录一下补丁过程,以后新版本需要自己打补丁的可以参考一下

ninjia的补丁相对简单,只需要把googletest包解压到ninjia目录下,然后修改ninja-1.13.1\CMakeLists.txt文件
找到GTest一段,如下修改即可:
  find_package(GTest)
  if(NOT GTest_FOUND)
    include(FetchContent)
    FetchContent_Declare(
      googletest
      SOURCE_DIR ../googletest-1.16.0
      # GoogleTest v1.17.0 requires at least C++17 and cmake 3.16 which are above ninja project minimum requirements.
      # GoogleTest v1.16.0 requires at least C++14 and cmake 3.13 which are within the ninja project minimum requirements.
      #URL https://github.com/google/google ... etest-1.16.0.tar.gz
      #URL_HASH SHA256=78c676fc63881529bf97bf9d45948d905a66833fbfa5318ea2cd7478cb98f399
    )
    FetchContent_MakeAvailable(googletest)
  endif()

dftd4-3.7.0的补丁相对比较麻烦,需要先下载mctc-lib-0.3.2、mstore-0.3.0、multicharge-0.3.0三个包,解压到dftd4-3.7.0\subprojects\dftd4\subprojects目录下
然后修改dftd4-3.7.0\subprojects\dftd4\config\cmake目录下的4个cmake配置文件

dftd4-utils.cmake修改86行fetch方法一段,使其不从GIT仓库下载,而是直接使用补丁的本地代码
    if("${method}" STREQUAL "fetch")
      message(STATUS "Retrieving ${package} revision ${revision} from ${url}")
      include(FetchContent)
      FetchContent_Declare(
        "${_pkg_lc}"
        SOURCE_DIR "${url}"
        #GIT_REPOSITORY "${url}"
        #GIT_TAG "${revision}"

另外,三个库的查找脚本替换url为本地路径:
Findmctc-lib.cmake第17行开始
set(_lib "mctc-lib")
set(_pkg "MCTCLIB")
set(_url "https://github.com/grimme-lab/mctc-lib")
set(_url "../subprojects/mctc-lib-0.3.2")
set(_revision "v0.3.2")

Findmstore.cmake第17行开始
set(_lib "mstore")
set(_pkg "MSTORE")
set(_url "https://github.com/grimme-lab/mstore")
set(_url "../subprojects/mstore-0.3.0")
set(_revision "v0.3.0")

Findmulticharge.cmake第17行开始
set(_lib "multicharge")
set(_pkg "MULTICHARGE")
set(_url "https://github.com/grimme-lab/multicharge")
set(_url "../subprojects/multicharge-0.3.0")
set(_revision "v0.3.0")
作者
Author:
reid    时间: 2025-9-10 00:08
gsbear 发表于 2025-9-8 16:22
补丁记录:记录一下补丁过程,以后新版本需要自己打补丁的可以参考一下

ninjia的补丁相对简单,只需要把 ...

牛!  楼主费心了
作者
Author:
f294540290    时间: 2025-11-2 01:51
已测试 库有问题
作者
Author:
以玉名诗    时间: 2026-1-6 10:39
测试了dft4-3.7.0包,好用!帮大忙了!感谢!
作者
Author:
UW_0728.    时间: 2026-1-6 13:12
直接用DFT-D4的GitHub仓库里提供的.tar.xz文件即可,甭用.tar.gz,前者自己包含了子程序的代码包,无需单另下载。ninja我觉得用系统自带的(dnf install ninja-build)就毫无问题。
顺带一提,开发者现在更推荐使用tblite而非dftd4包,因为tblite不仅支持gfn2-xtb还顺带支持dftd4;而且虽然tblite也存在类似问题,但该问题在目前的开发分支中已经得到解决。
作者
Author:
gsbear    时间: 2026-1-7 22:40
UW_0728. 发表于 2026-1-6 13:12
直接用DFT-D4的GitHub仓库里提供的.tar.xz文件即可,甭用.tar.gz,前者自己包含了子程序的代码包,无需单另 ...

这里打补丁的ninja和DFT-D4是给CP2K2025.2离线安装用的,主要目的不是单独安装
感谢tar.xz的建议,我后面有时间测试一下,如果能用,可以省不少事,DFT-D4打补丁是最麻烦的




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3