Windows平台下使用CMake构建Apache log4cxx 0.13.0时遇APR相关错误求助
解决MinGW构建log4cxx 0.13.0时CMake识别APR失败的问题
看起来你遇到的问题是CMake调用apr-1-config脚本时的环境兼容问题——apr-1-config是MSYS2环境下的shell脚本,如果你在Windows原生的cmd或PowerShell里运行CMake,系统会把它当成Win32应用执行,自然就抛出了%1 is not a valid Win32 application的错误。
下面是具体的解决步骤:
1. 切换到MSYS2终端执行CMake
首先打开对应的MSYS2终端(比如你装的是64位MinGW就打开MinGW64.exe),确保终端环境能正常访问APR工具。然后在log4cxx源码目录下创建build目录并进入:
mkdir build && cd build
接着用MinGW专属的生成器运行CMake:
cmake .. -G "MinGW Makefiles"
如果你的APR是手动编译安装(而非通过MSYS2的pacman包管理器安装),需要手动指定APR的安装根目录:
cmake .. -G "MinGW Makefiles" -DAPR_ROOT=/your/apr/install/path
替换/your/apr/install/path为你实际的APR安装路径,比如/usr/local或自定义目录。
2. 先验证APR脚本的可用性
在MSYS2终端里先手动执行:
apr-1-config --includedir
如果能正常输出APR的头文件目录,说明APR环境配置正常,再运行CMake就不会报错。如果这个命令也失败,你需要检查:
- APR是否是MinGW版本(而非MSYS版本)
- APR的bin目录是否在MSYS2的
PATH环境变量中
3. 手动指定APR路径(若CMake仍无法识别)
如果上面的步骤无效,可以直接给CMake指定APR的头文件和库文件路径:
cmake .. -G "MinGW Makefiles" \ -DAPR_INCLUDE_DIR=/path/to/apr/include \ -DAPR_LIBRARY=/path/to/apr/lib/libapr-1.dll.a
替换路径为你实际的APR文件路径即可。
按照这个流程操作,应该就能让CMake正确识别APR,顺利完成log4cxx的配置步骤了。
内容的提问来源于stack exchange,提问作者Orlay Garcia Duconge
相关产品推荐
相关产品推荐

