我正在尝试使用 cmake 在 Windows 10 上静态构建 pcre2。我采取的步骤是:
md C:\ProgramData\ThirdParty\installed\pcre2
md pcre2
curl https://ftp.pcre.org/pub/pcre/pcre2-10.35.tar.gz -o tmp.tar.gz
tar -xf tmp.tar.gz -C pcre2 --strip-components=1
cd pcre2
md build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX="C:\ProgramData\ThirdParty\installed\pcre2" -DBUILD_SHARED_LIBS=OFF -DPCRE2_STATIC=ON -DPCRE2_BUILD_TESTS=OFF -DZLIB_LIBRARY="C:\ProgramData\ThirdParty\installed\zlib\lib\zlibstatic.lib"
cmake --build . --config Release --target install
尽管这些设置应该在我理解正确的情况下构建一个静态库,但在尝试链接 pcre2-8.lib 时出现 Unresolved external symbol 错误,我还包含了 pcre2-posix.lib 以备不时之需。
使用 DUMPBIN/SYMBOLS
查看两个 lib 文件,我猜测有外部符号指向构建输出的 bin 目录中的 pcre2-8.dll。
是否可以让 pcre2-8.lib 没有外部引用?
提前感谢您的宝贵时间。
最佳答案
它已经是静态的了。只需在将要使用该库的项目中的 #include "pcre2.h"之前定义宏名称 PCRE2_STATIC。
像这样:
#define PCRE2_STATIC
#define PCRE2_CODE_UNIT_WIDTH 8
#include "pcre2.h"
关于windows - 如何获得 pcre2 的完全静态构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64895090/