Conan 配合 Clangd + CMake
-
用官方模版初始化项目
conan new cmake_exe -d name=myapp -d version=0.1 -
将
conanfile.py中的generate替换为def generate(self): deps = CMakeDeps(self) deps.generate() tc = CMakeToolchain(self) # 强制注入头文件路径 (解决 IDE 高亮红线) for dep in self.dependencies.values(): for include_path in dep.cpp_info.includedirs: tc.extra_cxxflags.append(f"-I{include_path}") # 使用 cache_variables 注入链接标志 (解决链接问题) link_flags = [] for lib_path in dep.cpp_info.libdirs: link_flags.append(f"-L{lib_path}") for lib in dep.cpp_info.libs: link_flags.append(f"-l{lib}") for framework in dep.cpp_info.frameworks: link_flags.append(f"-framework {framework}") if link_flags: current = tc.cache_variables.get("CMAKE_EXE_LINKER_FLAGS", "") tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = f"{current} {' '.join(link_flags)}" tc.generate() -
conan install . --build=missing cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=build/Release/generators/conan_toolchain.cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Releaseln -s build/Release/compile_commands.json compile_commands.json这一步将会生成
compile_commands.json,并且正确设置链接标志。 -
conan build .

浙公网安备 33010602011771号