【发布时间】:2021-05-29 04:19:21
【问题描述】:
我不知道如何解释原因,但是当我在目录中运行 cmake 时,它可以正常工作。如果我上一层并在 CMakeLists.txt 中使用 Add_SubDirectory,那么它就坏了。
我会放下步骤。
- mkdir 我的文件夹
- git 克隆https://github.com/mariadb-corporation/mariadb-connector-c.git
这些步骤可以证明构建有效:
- cd mariadb-connector-c
- mkdir build && cd build
- cmake -G Ninja ..
- 忍者
好的,效果很好。所以接下来尝试上一层:
- cd ../..(现在位于“MyFolder”中)
- 使用此源添加 CMakeLists.txt。
cmake_minimum_required(VERSION 3.0.0)
project(mariadb VERSION 1.0.0)
add_subdirectory(mariadb-connector-c)
- mkdir build & cd build
- cmake -G Ninja ..
现在它爆炸了。有谁知道为什么会这样?
编辑
这里的要求是作为子项目构建时日志的第一个错误。
Determining if files select.h exist failed with the following output:
Change Dir: /home/questionable/Desktop/Programming/source-mariadb/build/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/ninja cmTC_c650d && [1/2] Building C object CMakeFiles/cmTC_c650d.dir/HAVE_SELECT_H.c.o
FAILED: CMakeFiles/cmTC_c650d.dir/HAVE_SELECT_H.c.o
/usr/bin/cc -Wunused -Wlogical-op -Wno-uninitialized -Wall -Wextra -Wformat-security -Wno-init-self -Wwrite-strings -Wshift-count-overflow -Wdeclaration-after-statement -Wno-undef -Wno-unknown-pragmas -o CMakeFiles/cmTC_c650d.dir/HAVE_SELECT_H.c.o -c /home/questionable/Desktop/Programming/source-mariadb/build/CMakeFiles/CheckIncludeFiles/HAVE_SELECT_H.c
/home/questionable/Desktop/Programming/source-mariadb/build/CMakeFiles/CheckIncludeFiles/HAVE_SELECT_H.c:2:10: fatal error: select.h: No such file or directory
2 | #include <select.h>
| ^~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
Source:
/* */
#include <select.h>
int main(void){return 0;}
【问题讨论】:
-
定义“爆炸”。你得到什么错误?
-
这是错误、页面和页面的完整日志。第一个错误是找不到
,最后一个错误是-lpthread不存在。 -
除非 CMake 项目的文档/README 明确指定它可以构建为子项目,否则没有人保证它可以以这种方式建造的。嗯,通常一个很好的假设,可以将特定项目构建为子项目。但是,如果您希望我们调试该用法,则需要更详细地了解您的问题。例如。显示您收到的确切错误消息。像往常一样,如果您的错误日志太长,通常只显示第一条错误消息就足够了。
-
不,不显示
CMakeErrorLog.txt文件的内容:这些错误消息大多不是“真实的”。在 CMake 输出中显示错误消息。 -
请发布整个错误日志,所有页面和所有页面。也请详细编译(
make VERBOSE=1或cmake --verbose --build ..)以获得更多页面的错误日志,然后将其全部发布。您发布了用于检测select.h的部分CMakeErrorLog - 我认为它甚至与问题无关,它只是检测select.h,并且确定它应该丢失,它是sys/select.h。
标签: cmake