我“维护”了一组脚本,用于为项目自定义构建Apache httpd。引用是因为我确实没有资格完成这项任务,但在过去几年中几次都无法使Apache建成。
自v1.6 +起,Expat已从APR-util的源代码树中拔出。建议的构建apache的过程似乎是在环境上 install 进行移植,以针对该环境进行构建。这让我感到不舒服,因为我希望自己的构建脚本可以在环境中移植,并在子模块中构建特定的标签/ expat代码。
我总是在构建apr-util时出错:
-找不到EXPAT(丢失:EXPAT_LIBRARY)(找到版本“ 2.1.0”)
我尝试过的事情:
这些都不会更改我收到的错误消息。 我实际上没有cmake的经验,但是我已经探究了apr-util CMakeLists.txt甚至cmake \ share \ cmake-3.14 \ Modules \ FindEXPAT.cmake试图弄清楚它是如何寻找/寻找什么。我注意到看似决定性的一行正在寻找NAMES“ expat”或“ libexpat”
find_library(EXPAT_LIBRARY NAMES expat libexpat HINTS ${PC_EXPAT_LIBRARY_DIRS})
在这里https://cmake.org/cmake/help/v3.12/command/find_library.html(我对这一切都还不了解),它谈论采用NAMES并单独尝试或使用特定于平台的前缀和后缀来进行尝试。我注意到expat的构建输出以
结尾-- Installing: C:/Apache24/lib/expatd.lib
-- Installing: C:/Apache24/bin/expatd.dll
-- Installing: C:/Apache24/include/expat.h
-- Installing: C:/Apache24/include/expat_external.h
-- Installing: C:/Apache24/lib/pkgconfig/expat.pc
-- Installing: C:/Apache24/bin/xmlwf.exe
那么,进入lib的是带有任何后缀的'expatd'而不是'expat'或'libexpat'...也许我什至没有生成任何apr-util / cmake想要的东西?
我最多要花10个小时(今年-再加上去年我尝试此方法并最终放弃的10-20个小时)。我不知道我的愚蠢暴力手段是否不能很好地为我服务,或者这根本不可能,但是我无法想象那是真的。任何帮助将不胜感激。
这是我用来构建的bat文件的摘录
:: goto skipExpat
echo ******* Building expat *******
:: pause
mkdir %DEVDIR%\build\expat
cd /D %DEVDIR%\build\expat
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% ..\..\src\libexpat\expat
nmake
nmake install
echo ******* Done building expat *******
:skipExpat
echo ******* Building apr *******
:: pause
mkdir %DEVDIR%\build\apr
cd /D %DEVDIR%\build\apr
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMIN_WINDOWS_VER=0x0600 -DAPR_HAVE_IPV6=ON -DAPR_INSTALL_PRIVATE_H=ON -DAPR_BUILD_TESTAPR=OFF -DINSTALL_PDB=OFF ..\..\src\apr
nmake
nmake install
echo ******* Done building apr *******
echo ******* Building apr-util *******
:: set EXPAT_ROOT=%DEVDIR%src\libexpat\expat\lib
set EXPAT_ROOT=%INSTALL_PREFIX%\lib
:: pause
mkdir %DEVDIR%\build\apr-util
cd /D %DEVDIR%\build\apr-util
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% -DOPENSSL_ROOT_DIR=%INSTALL_PREFIX% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DAPU_HAVE_CRYPTO=ON -DAPR_BUILD_TESTAPR=OFF -DINSTALL_PDB=OFF ..\..\src\apr-util
nmake
nmake install
echo ******* Done building apr-util *******