首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能为我提供一个关于如何正确构建和安装CMake gumbo查询的适当教程吗?

有人能为我提供一个关于如何正确构建和安装CMake gumbo查询的适当教程吗?
EN

Stack Overflow用户
提问于 2021-09-07 16:13:04
回答 1查看 380关注 0票数 1

我没有找到任何关于安装这个库的适当教程。最接近我的是:

  • 使用自述(Linux)中的指令构建gumbo-parser
  • 使用自述(Linux)中的指令构建gumbo-query
  • 将lib文件夹复制到我的windows机器
  • 将这些行添加到我的CMake文件中:
代码语言:javascript
复制
set(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

我该如何解决这个问题呢?我是不是走错路了?

EN

回答 1

Stack Overflow用户

发布于 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目录中:

代码语言:javascript
复制
@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所在的确切路径。

例如。

代码语言:javascript
复制
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来测试最终的应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69091519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档