【发布时间】:2020-07-22 10:09:24
【问题描述】:
我是第一次使用 CMake,但有一些理解上的问题。谁能向我解释一下 ERROR 是什么意思,为什么以及如何解决它?
对于我的项目,我下载了 git-libraries "libubox-master" 和 "ubus-head" 并将它们分别放入我的项目目录中的文件夹 "libubox" 和 "ubus" 中。这些库已经有不同的 CMakeList.txt 文件。 在我的项目目录中,我自己创建了文件 client.c、server.c、server.h 和 CMakeLists.txt。
我的文件夹结构:
project/
--------cmake-build-debug/ ...
--------libubox/ ... provided files and folders, including CMakeFiles
--------ubus/ ... provided files and folders, including CMakeFiles
--------client.c
--------CMakeLists.txt
--------server.c
--------server.h
我的 CMakeList.txt 文件如下所示:
cmake_minimum_required(VERSION 3.7)
project (ubusDemo)
add_subdirectory(libubox)
add_subdirectory(ubus)
add_executable(Client client.c)
add_executable(Server server.c)
所以这只是一个简单的文件 - 我是不是忘记了一些必要的东西?
我得到的错误信息:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
blob_library
linked by target "ubusd" in directory /home/matthias/Workspace/ubusDemo/ubus
linked by target "cli" in directory /home/matthias/Workspace/ubusDemo/ubus
linked by target "server" in directory /home/matthias/Workspace/ubusDemo/ubus/examples
ubox_include_dir
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/lua
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
used as include directory in directory /home/matthias/Workspace/ubusDemo/ubus/examples
ubox_library
linked by target "ubus" in directory /home/matthias/Workspace/ubusDemo/ubus
linked by target "ubusd" in directory /home/matthias/Workspace/ubusDemo/ubus
linked by target "cli" in directory /home/matthias/Workspace/ubusDemo/ubus
linked by target "server" in directory /home/matthias/Workspace/ubusDemo/ubus/examples
linked by target "client" in directory /home/matthias/Workspace/ubusDemo/ubus/examples
我必须在哪里进行更改? 就在我的 CMakeLists.txt 文件中,还是我必须在其他 CMakeLists.txt 文件中添加一些依赖项?
我如何使用一些头文件,例如libubox 像我的client.c 文件中的blob.h 吗?
写#include <libubox/blob.h>对吗?
不幸的是,我以前没有使用过 Makefiles(既不是 CMake 也不是 Make)。 我希望,有人可以帮助我。
【问题讨论】:
-
你必须设置变量
blob_libraryubox_include_dir和ubox_library。然后你应该将库链接到你的目标。 -
@Thomas Sablik:我必须在哪里设置这些变量?
-
你如何配置你的项目?您可以运行 CMake 并使用
-D设置变量或使用ccmake或cmake-gui。您可以编辑文件CMakeCache.txt。您还可以使用set在您的 CMake 文件中静态设置它们。
标签: c linux cmake dependency-management