我没有找到任何关于安装这个库的适当教程。最接近我的是:
gumbo-parsergumbo-queryset(CMAKE_PREFIX_PATH "E:/Programs/gumbo-query")
include_directories("E:/Programs/gumbo-query/src")
set(LIBS ${LIBS} "E:/Programs/gumbo-query/src/lib")但问题是,当我尝试包含Document.h时,它说的是gumbo.h: no such file or directory。
我该如何解决这个问题呢?我是不是走错路了?
发布于 2021-09-08 19:24:33
因此,我已经设法解决了我的问题,在另一个人的帮助下,在一个不和谐的服务器,我将在这里张贴解决方案,以使人们的生活在未来更容易。
本指南是针对Windows编写的,主要是因为没有任何关于如何在Windows上构建这些东西的资源。
步骤1:
将两个存储库克隆到它们的默认状态。(gumbo解析器表示C,gumbo查询表示C++)
重要!
确保两个存储库都位于同一个目录中,因为本教程假定存储库的名称没有更改,并且它们位于同一个目录中。
例如,下面的目录是每个存储库驻留的合理位置。
C:\C++\gumbo_parser
C:\C++\gumbo_query
第2步:
将此构建脚本复制到gumbo-parser\src目录中:
@echo off
cls
REM Build Script
REM Set Compiler Settings Here
set GCC=gcc
set AR=ar
set OUTPUT=libgumbo_parser.a
set DEBUGMODE=0
set REBUILD_LIBRARIES=0
set LINK_ONLY=0
set VERBOSE=0
set ASYNC_BUILD=1
set C_COMPILER_FLAGS=-std=c99 -Wall
set ADDITIONAL_LIBRARIES=
set ADDITIONAL_LIBDIRS=
set ADDITIONAL_INCLUDEDIRS=-I.
del %OUTPUT% 2>nul
setlocal enabledelayedexpansion
if %LINK_ONLY% GTR 0 (
goto linker
)
if %DEBUGMODE% GTR 0 (
set DEBUG_INFO=-g
) else (
set DEBUG_INFO=
)
if %ASYNC_BUILD% GTR 0 (
set WAIT=
) else (
set WAIT=/WAIT
)
if %REBUILD_LIBRARIES% GTR 0 (
del /S /Q "*.o" 2>nul
)
echo Building C Libraries...
for %%F in (*.c) do (
if not exist %%~nF.o (
echo Building %%~nF.o
start /B %WAIT% "%%~nF.o" %GCC% %ADDITIONAL_INCLUDEDIRS% %C_COMPILER_FLAGS% %DEBUG_INFO% -c %%F -o %%~nF.o
if %VERBOSE% GTR 0 (
echo %GCC% %ADDITIONAL_INCLUDEDIRS% %C_COMPILER_FLAGS% %DEBUG_INFO% -c %%F -o %%~nF.o
)
)
)
REM Wait for building process to finish
:loop
set /a count=0
for /f %%G in ('tasklist ^| find /c "%GCC%"') do ( set /A count=%count%+%%G )
if %count%==0 (
goto linker
) else (
timeout /t 2 /nobreak>nul
goto loop
)
:linker
set "files="
for /f "delims=" %%A in ('dir /b /a-d "*.o" ') do set "files=!files! %%A"
:link
echo Linking Executable...
if %VERBOSE% GTR 0 (
echo %AR% ru %OUTPUT% %files%
)
%AR% ru %OUTPUT% %files%
:finish
if exist .\%OUTPUT% (
echo Build Success!
) else (
echo Build Failed!
)您需要确保在PATH环境中配置了C编译器(MinGW) bin目录;否则,将构建脚本配置为AR和GCC,并将其设置为gcc所在的确切路径。
例如。
set GCC=E:\Programs\Qt\Tools\mingw810_64\bin\gcc
set AR=E:\Programs\Qt\Tools\mingw810_64\bin\ar您还需要在Windows窗口中运行此脚本,并提升权限。否则对我就没用了。
这将创建gumbo解析器的静态库。
第3步:
为gumbo查询配置CMake。
主要是,在配置gumbo_query时确保设置了以下变量:
Gumbo_INCLUDE_DIR <path-to-gumbo-parser>/src
Gumbo_LIBRARY <path-to-gumbo-parser>/src/libgumbo_parser.a
Gumbo_static_LIBRARY
这应该已经设置好了,但为了确保正确设置C和C++编译器,请注意:
CMAKE_C_COMPILER <path-to-mingw>\bin\gcc.exe
CMAKE_CXX_COMPILER <path-to-mingw>\bin\g++.exe
CMAKE_CXX_COMPILER_AR <path-to-mingw>\bin\gcc-ar.exe
以及CMake程序(为此您必须先勾选):CMake <path-to-mingw>\bin\mingw32-make.exe
确保您正在配置正确的目录。将生成位置设置为位于gumbo-query中的生成文件夹。


步骤4:生成并运行CMake。
CMake应该位于MinGW bin文件夹cd中的gumbo-query/build目录中。然后,运行mingw32-make来构建目标库。一旦完成,您将有一个动态和静态的gumbo查询库。
在哪里可以找到构建文件和有用的目录:
Gumbo查询DLL gumbo-query\build\src\libgq.dll Gumbo查询静态库 gumbo-query\lib\libgq.a gumbo-query\lib\libgq.a gumbo-query\lib\libgq.dll.a >E 144Gumbo Parser静态库>e 245 gumbo-parser\src\libgumbo_parser.a E 147Gumbo Parser Header FilesE 248 gumbo-parser\src
步骤5(可选):运行示例
若要编译gumbo-query中的示例应用程序,请将cd编译到示例目录中,并运行以下命令:
g++ -c main.cpp -I..\src -I..\..\gumbo-parser\src g++ -o test.exe main.o -L..\lib -L..\..\gumbo-parser\src -static -lgq -lgumbo_parser
运行:./test来测试最终的应用程序。
https://stackoverflow.com/questions/69091519
复制相似问题