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
相关产品推荐
相关产品推荐

