You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake构建项目中无法单独编译Bison生成的单个.cxx文件

解决CMake生成Makefile单文件编译问题
  • 别直接给make传完整.o路径,根目录的Makefile不认这个目标,得指定子目录再调用目标:
    在项目根目录执行:

    make -C vc tda_vc_object_lib.dir/vc_gram.cxx.o
    

    或者先进入vc目录再执行:

    cd vc
    make tda_vc_object_lib.dir/vc_gram.cxx.o
    
  • 如果还是不行,直接手动调用编译器编译(从build.make里扒编译参数):
    打开vc/CMakeFiles/tda_vc_object_lib.dir/build.make,找到vc_gram.cxx对应的编译规则,把里面的命令复制出来直接执行即可。比如文件里会有类似这样的规则:

    vc_gram.cxx.o: ../vc_gram.cxx
    	$(CXX) $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o vc_gram.cxx.o -c ../vc_gram.cxx
    

    把$(CXX)这类变量替换成实际的编译器和参数,或者直接在vc目录下用cmake生成的环境变量执行:

    cmake -E env -C vc g++ -c -o CMakeFiles/tda_vc_object_lib.dir/vc_gram.cxx.o vc_gram.cxx [这里加上build.make里的CXX_DEFINES、CXX_INCLUDES、CXX_FLAGS内容]
    
  • 之前踩的坑:

    • cmake --target不能传.o文件,它只认CMake定义的库、可执行文件这类目标名(比如tda_vc_object_lib),不支持单个.o文件作为目标。
    • 直接在根目录给make传完整.o路径,根Makefile不会自动把这个目标转发到子目录,必须用-C参数指定子目录。

内容的提问来源于stack exchange,提问作者Frank Puck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:47:32