首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake在目录中构建,但在使用add_subdirectory时不会

CMake在目录中构建,但在使用add_subdirectory时不会
EN

Stack Overflow用户
提问于 2021-02-27 03:24:15
回答 1查看 153关注 0票数 0

我不知道如何解释原因,但当我在目录中运行cmake时,它工作得很好。如果我上一级并在CMakeLists.txt中使用Add_SubDirectory,那么它就坏了。

我会把台阶放下。

  1. mkdir MyFolder
  2. git克隆https://github.com/mariadb-corporation/mariadb-connector-c.git

这些步骤证明构建是可行的:

  1. cd mariadb-connector-c
  2. mkdir内部版本和cd内部版本
  3. cmake -G忍者..
  4. 忍者

好的,这很有效。因此,下一步尝试上一级:

  1. cd ../..(现在位于“MyFolder”中)
  2. 添加包含此源的CMakeLists.txt。
代码语言:javascript
复制
cmake_minimum_required(VERSION 3.0.0)
project(mariadb VERSION 1.0.0)

add_subdirectory(mariadb-connector-c)
  1. mkdir内部版本和cd内部版本
  2. cmake -G忍者..

现在它爆炸了。有人知道为什么会这样吗?

编辑

按照这里的要求,日志作为子项目构建时会出现第一个错误。

代码语言:javascript
复制
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 
      |          ^~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.


Source:
/* */
#include 


int main(void){return 0;}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-27 11:43:22

我在cmake configure阶段从你的源代码得到的错误是:

代码语言:javascript
复制
CMake Deprecation Warning at mariadb-connector-c/CMakeLists.txt:5 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument  value or use a ... suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at mariadb-connector-c/CMakeLists.txt:19 (PROJECT):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target "dialog".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:30 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "client_ed25519".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:54 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "caching_sha2_password".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:70 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "sha256_password".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:81 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "auth_gssapi_client".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:106 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "mysql_clear_password".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/auth/CMakeLists.txt:126 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


CMake Error at mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target "remote_io".
Call Stack (most recent call first):
  mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  mariadb-connector-c/plugins/io/CMakeLists.txt:7 (REGISTER_PLUGIN)
  mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  mariadb-connector-c/CMakeLists.txt:392 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/home/kamil/tmp/test/build/CMakeFiles/CMakeOutput.log".
See also "/home/kamil/tmp/test/build/CMakeFiles/CMakeError.log".

看起来好像有个问题install.cmake.看起来很奇怪INSTALL_PLUGINDIR未设置,因此DESTINATION参数install没有参数...:/。以下内容:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.0.0)
project(mariadb VERSION 1.0.0)

set(INSTALL_PLUGINDIR /some/path)
add_subdirectory(mariadb-connector-c)

允许生成项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66391677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档