如何让Conan 2的conan install在源码构建时打印底层编译命令
如何在Conan 2中显示源码构建的底层编译命令
核心原因
Conan的-vvv等冗余级别参数仅控制Conan自身的操作日志(比如依赖解析、包下载流程),无法触发底层构建工具(Make/Ninja)输出详细编译命令。需要直接向CMake传递CMAKE_VERBOSE_MAKEFILE参数来实现需求。
针对Unix Makefiles生成器的解决方案
临时命令行设置
直接在conan install命令中添加配置参数,无需修改配置文件:
conan install . --build=missing -c tools.cmake.cmaketoolchain:CMAKE_VERBOSE_MAKEFILE=True
执行后,Make工具会打印出所有编译、链接的底层命令。
持久化Profile设置
如果需要每次构建都默认开启详细输出,可以修改Conan的Profile文件(例如~/.conan2/profiles/default),添加以下内容:
[conf] tools.cmake.cmaketoolchain:CMAKE_VERBOSE_MAKEFILE=True
针对Ninja生成器的解决方案
Ninja默认会简化输出,同样可以通过传递CMAKE_VERBOSE_MAKEFILE参数开启详细编译命令,命令行方式与Makefiles一致:
conan install . --build=missing -c tools.cmake.cmaketoolchain:CMAKE_VERBOSE_MAKEFILE=True
或者也可以直接给Ninja传递VERBOSE=1参数,通过Conan的构建配置实现:
conan install . --build=missing -c tools.build:args=["VERBOSE=1"]
在conanfile.py中内置配置
如果你的项目使用自定义conanfile.py,可以在生成CMake工具链时直接设置变量,确保所有构建都启用详细输出:
from conan import ConanFile from conan.tools.cmake import CMakeToolchain class MyRecipe(ConanFile): # ... 其他配置 ... def generate(self): tc = CMakeToolchain(self) tc.variables["CMAKE_VERBOSE_MAKEFILE"] = True tc.generate()
内容的提问来源于stack exchange,提问作者Igor Mikushkin
相关产品推荐
相关产品推荐

