通常,Conan包仅包含*.dll
,*.lib
,*.pdb
,*.so
,*.a
,*.dylib
等构建工件文件以及给定的 C 或 C ++ 库的标题。但是,有时当您调试代码时,使用库对于能够进入库代码以查看内部发生的情况非常有用。例如,确定何时出现问题,这是因为库的使用不正确还是因为库中存在错误。
答案 0 :(得分:4)
有两种策略可用于调试依赖项:
--build=PkgName
参数强制它从源构建。当您从源代码构建包时,根据构建系统,二进制工件可能会引用构建包的临时构建文件夹,然后能够找到它们并使用它来进行调试。即使不考虑调试,此策略也适用于第三方软件包。使用gdb
,您可以执行类似
def build(self):
cmake = CMake(self.settings)
gcc_dbg_src = ""
if self.settings.compiler == "gcc" and self.settings.build_type == "Debug":
gcc_dbg_src = ' -DCMAKE_CXX_FLAGS="-fdebug-prefix-map=%s/hello=src"' % os.getcwd()
self.run('cmake hello %s %s' % (cmake.command_line, gcc_dbg_src))
self.run("cmake --build . %s" % cmake.build_config)
def package(self):
self.copy("*.h", dst="include", src="hello")
if self.settings.build_type == "Debug":
self.copy("*.cpp", dst="src", src="hello")
self.copy("*.lib", dst="lib", keep_path=False)
self.copy("*.a", dst="lib", keep_path=False)
确保使用正确的标志进行编译,并确保源文件也已打包。然后,在消费者方面,您可能希望imports
.cpp
个文件,因此gdb
调试器除了正在调试的二进制文件之外还可以找到它们,或者使用调试器路径来添加包文件夹。
在Windows中,使用Visual Studio,您可能希望打包.pdb
个文件