c - 使用 ninja 生成可执行文件的问题。使用带有柯南的软件包
问题描述
我有下一个问题,当我打算生成我的应用程序的可执行文件时,系统会显示下一条消息:
undefined reference to `sum'
undefined reference to `rest'
undefined reference to `multi'
对于 div,应用程序向我显示了错误的结果。
我可以创建包,也可以使用 Cmake 编译,系统不会显示错误,但是当我打算生成可执行文件时,系统会显示这些消息,我不知道为什么,所以我向您展示我的消费者文件,如 CMakeLists 和 conanfile。我希望你能帮助我!
CMakeLists。文本
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Example C)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
SET(MyExample_SRC
"main.c")
add_executable(example ${MyExample_SRC})
target_link_libraries(example ${CONAN_LIBS})
柯南文件.txt
[requires]
Exa/0.1@edwin/testing
[generators]
cmake
这是我用来创建包的 conanfile.py:
from conans import ConanFile, CMake, tools
class ExaConan(ConanFile):
name = "Exa"
version = "0.1"
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"
def source(self):
#self.run("CD C:/projects/connan-example/pkg")
pass
def build(self):
self.run("CD C:/projects/connan-example/pkg/ & Compile.bat")
#cmake = CMake(self)
#make.configure(source_folder="connan-example")
#cmake.build()
def package(self):
self.copy("MultiDiv.obj", dst="objects", keep_path=False)
self.copy("SumRest.c", dst="source", keep_path=False)
#self.copy("*.lib", dst="lib", keep_path=False)
def package_info(self):
#self.c_info.libs = ["example"]
pass
Compile.bat 只是为 MultDiv 创建文件 .obj,就像文件显示的那样,我正在打包 MultiDiv 和 SumRest。当我使用 gcc 命令编译并生成可执行文件时,我可以成功
解决方案
您缺少一些信息:
${CONAN_LIBS}
您在 CMakeLists.txt 中看到的变量从依赖项方法package_info()
中获取其值。由于您的package_info()
方法是空的,它不会将信息传递给消费者,他们不需要如何与他们联系。- 您没有使用正确的库。您需要创建一个实际的静态“.lib”、“.a”库或共享库,并将其打包到
"lib"
目录中。或者如果不将它(在package()
方法中)打包到该目录,则self.cpp_info.libdirs=["yourlibdir"]
相应地定义 - 即使可以在 CMake 中使用 OBJECT“库”,它们也不能在 CMake 中完全用作目标(我认为它已在最后一个 CMake 3.12 中添加)
推荐阅读
- angular - Angular Material 反应形式:为每个验证器显示不同的错误消息
- css - 为什么我的媒体查询范围不能正常工作?
- vuejs2 - 带有 flex/grid 包装器的 vue 过渡组项目移动到左上角
- android - HTML 原生应用无法在大尺寸手机上正确适配横向模式。不能强行合身
- node.js - JWT 身份验证授权不起作用
- python - •选择一个有效的选项。该选择不是可用的选择之一
- firebase - 无法使用 Flutter Web 访问 Cloud Firestore
- python - 尝试下载 pdf 文件时崩溃
- pandas - 我如何比较熊猫中的值并更改值
- python - Python从字体列表中导入字体