官网 Wonderings of a SAT geek | A blog about SAT solving and cryptography
GitHub 资源包 https://github.com/msoos/cryptominisat
下图是官方给出的安装教程,第一次编译安装可能会出现一些问题,所以写下这篇博客,希望大家少走弯路。
1. 获得工程项目
选择分支(默认是master分支),拉取需要版本的工程项目,可以直接下载.zip 的压缩包也可以通过Git拉取。
2. 解压工程项目资源,组织新建后续编译时需要的文件夹
3. 下载批处理安装包
download http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.zip
解压boost_1_59_0.zip到上C:\cms\build\
创建批处理安装文件夹boost_1_59_0_install,后续会在该文件夹中生成很多需要的文件。
4. 批处理
打开Windows PowerShell。快捷键win+x+a。
切换到boost_1_59_0目录下,执行下面命令。
5. 拉取zlib依赖包
拉取前可以在浏览器中试一下是否可以访问。然后切换到zlib目录下,切换分支,创建需要的文件夹,再切换目录。参考下面命令。
C:\cms\build> git clone https://github.com/madler/zlib
C:\cms\build> cd zlib
C:\cms\build\zlib> git checkout v1.2.8
C:\cms\build\zlib> mkdir build
C:\cms\build\zlib> mkdir myinstall
C:\cms\build\zlib> cd build
6. CMake编译
去官网下载CMake安装压缩包Download | CMake
解压后,配环境变量,将bin\目录加到path环境变量中。
执行CMake编译
7. 执行msbuild
C:\cms\build\zlib\build> msbuild /t:Build /p:Configuration=Release /p:Platform="x64" zlib.sln
C:\cms\build\zlib\build> msbuild INSTALL.vcxproj
C:\cms\build> cd ..\..
如果出现没有msbuild命令,需要配置环境变量
有可能会出现找不到“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\
v4.0\V110\Microsoft.Cpp.Default.props”
根据路径找到文件所处位置确实没有,但有"C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Default.props"
指定编译的VS版本,加入参数:/p:VisualStudioVersion=15.0
8. 再一次CMake编译 Release 版本
C:\cms\build> cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DSTATICCOMPILE=ON -DZLIB_ROOT=C:\cms\build\zlib\myinstall -DBOOST_ROOT=C:\cms\build\boost_1_59_0_install ..
C:\cms\build> cmake --build --config Release .
cmake 编译 release版本,又报错了,未知参数。
换成cmake --build . --config Release
9. 生成运行程序
10. 使用cryptominisat
新建cnf文件
该文件有 3 个变量和 3 个子句,这反映在标题 p cnf 3 3 中,它将变量的数量作为第一个数字,将子句的数量作为第二个。每个子句都以“0”结尾。子句说:1 必须为 True,2 必须为 False,并且 1 必须为 False,2 必须为 True,或 3 必须为 True。这个问题的唯一解决方案是:
这意味着,设置变量 1 True、变量 2 False 和变量 3 True 满足 CNF 中的一组约束(子句)。如果文件包含:
p cnf 3 4
1 0
-2 0
-3 0
-1 2 3 0
然后没有解决方案,求解器返回 s UNSATISFIABLE。