CLion使用Cygwin构建项目报QUICKFIX_LIBRARY未找到错误如何解决
CLion 搭配 Cygwin 构建项目报 QUICKFIX_LIBRARY 未找到解决方法
核心报错信息
-- Found Boost: /usr/include (found version "1.66.0") found components: system thread regex iostreams chrono date_time atomic -- Configuring done CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: QUICKFIX_LIBRARY linked by target "run_engine" in directory /cygdrive/c/Users/33671/Desktop/main_program -- Generating done CMake Generate step failed. Build files cannot be regenerated correctly.
报错本质是CMake配置阶段可以正常识别Boost依赖,但无法定位QuickFIX的库文件,导致构建文件生成失败,没有可执行文件产出,按以下步骤排查即可:
- 第一步:校验Cygwin环境是否安装了QuickFIX
打开Cygwin终端,执行查找命令:find /usr -name "*quickfix*"- 如果返回结果里没有
libquickfix.dll.a、libquickfix.so这类库文件,说明环境没装对应依赖:直接运行Cygwin的setup安装程序,在包列表搜索quickfix勾选安装;如果源里没有对应包,就下载QuickFIX源码,在Cygwin终端内完成编译安装,默认安装后头文件在/usr/include/quickfix,库文件在/usr/lib。 - 如果能查到库文件,记录下库文件的完整存放路径,比如返回
/usr/local/lib/libquickfix.dll.a,就记下来库所在目录是/usr/local/lib。
- 如果返回结果里没有
- 第二步:修正项目CMake配置
打开项目根目录的CMakeLists.txt,定位查找QuickFIX的代码段:- 如果是用
find_library命令查找QUICKFIX_LIBRARY,补全Cygwin下的库搜索路径,参考写法:find_library(QUICKFIX_LIBRARY NAMES quickfix QuickFIX PATHS /usr/lib /usr/local/lib ) - 如果项目用了自定义的
FindQuickFIX.cmake查找模块,确认模块内的搜索路径包含Cygwin的/usr/lib、/usr/local/lib类Unix路径,不要只配置Windows风格的盘符路径。
- 如果是用
- 第三步:调整CLion的CMake配置
打开CLion设置,进入Build, Execution, Deployment > CMake配置页:- 在
CMake options输入框内手动指定QuickFIX库路径,比如-DQUICKFIX_LIBRARY=/usr/lib/libquickfix.dll.a,如果同时提示找不到QuickFIX头文件,补充头文件路径参数:-DQUICKFIX_INCLUDE_DIR=/usr/include - 先删除项目根目录下的
cmake-build-*构建缓存文件夹,再点击CMake面板的Reload CMake Project重新加载配置,不要复用旧的缓存文件。 - 同步检查Toolchains配置,确认当前选中的Cygwin工具链路径正确,gcc、g++、make程序均来自Cygwin安装目录的bin文件夹,不要混用MinGW或MSVC的编译程序。
- 在
- 第四步:特殊场景校验
- 如果是自行编译的QuickFIX,必须在Cygwin终端环境下执行编译命令,不能在Windows CMD、PowerShell下编译,否则产出的库是MinGW/MSVC格式,Cygwin的GCC无法识别链接。
- 确认QuickFIX库的编译位数和Cygwin环境位数一致,32位Cygwin不能链接64位版本的QuickFIX库,反之亦然。
内容的提问来源于stack exchange,提问作者PZo
相关产品推荐
相关产品推荐

