编译具有相同目标的不同子项目时,CMP0002错误

叶佩森

我有很多子文件夹

home
|
|-library1
|-library2
|
|-libraryn

每个子文件夹都包含一个可以自行编译的完整库(每个库都有一个不同的管理器)。到目前为止,它可以正常工作,我使用脚本进行编译。

现在,我需要创建另一个库,该库取决于现有库。为了做到这一点,我CMakeLists.txt使用add_subdirectory允许我编译所有库的命令创建了一个home文件夹

我有类似的东西

cmake_minimum_required (VERSION 2.8)

add_subdirectory(library1)
add_subdirectory(library2)
...
add_subdirectory(libraryn)

当我尝试执行时cmake,各种库均出现以下错误:

CMake Error at libraryY/CMakeLists.txt:63 (add_custom_target):
  add_custom_target cannot create target "doc" because another target with
  the same name already exists.  The existing target is a custom target
  created in source directory
  "/path/to/libraryX".  See
  documentation for policy CMP0002 for more details.

发生这种情况是因为在每个库中我们都创建了一个doc目标,以便编译该库本身的Doxygen文档。当库被一个一个地编译时,它可以正常工作,但是对于主库CMakeLists.txt,看来我做不到。

# Create doc target for doxygen documentation compilation.
find_package (Doxygen)
if (DOXYGEN_FOUND)
  set (Doxygen_Dir ${CMAKE_BINARY_DIR}/export/${Library_Version}/doc)
  # Copy images folder
  file (GLOB IMAGES_SRC "images/*")
  file (COPY ${IMAGES_SRC} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/images)
  configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
  add_custom_target (doc
    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Generating doxygen documentation" VERBATIM
  )
else (DOXYGEN_FOUND)
  message (STATUS "Doxygen must be installed in order to compile doc")
endif (DOXYGEN_FOUND)

有没有一种方法可以立即编译这些项目而无需修改此目标?

用户名

如果您不想修改任何内容,因此可以将所有这些项目都构建为子项目,则可以使用ExternalProject_Add来构建和安装依赖项。

选项

或者,您可以使用option命令doc从构建中排除目标:

# Foo/CMakeLists.txt
option(FOO_BUILD_DOCS "Build doc target for Foo project" OFF)
# ...
if(DOXYGEN_FOUND AND FOO_BUILD_DOCS)
  add_custom_target(doc ...)
endif()

# Boo/CMakeLists.txt
option(BOO_BUILD_DOCS "Build doc target for Boo project" OFF)
# ...
if(DOXYGEN_FOUND AND BOO_BUILD_DOCS)
  add_custom_target(doc ...)
endif()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译具有相同目标的不同子项目时,CMP0002错误

来自分类Dev

尝试在具有子项目引用的Android项目上使用“ cordova build”时出错

来自分类Dev

当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

来自分类Dev

如何使SBT子项目具有多个Scala版本?

来自分类Dev

具有左右对齐文本的离子项目

来自分类Dev

IntelliJ IDEA具有多个gradle子项目

来自分类Dev

创建android子项目时发生错误

来自分类Dev

phonegap:创建android子项目时发生错误

来自分类Dev

phonegap:创建android子项目时发生错误

来自分类Dev

创建一个调用子项目自定义目标的自定义目标

来自分类Dev

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

来自分类Dev

在sbt中编译子项目

来自分类Dev

对子项目使用不同的crossScalaVersions交叉编译集合项目

来自分类Dev

CMake:根据其他人的子项目标头构建子项目

来自分类Dev

CMake:根据其他人的子项目标头构建子项目

来自分类Dev

Cmake:将子项目目标导出到主项目

来自分类Dev

PowerPoint:如何对项目符号和子项目符号进行动画处理,以使它们在主幻灯片上具有不同的动画?

来自分类Dev

使用非编译依赖项时如何让gradle首先构建依赖项子项目

来自分类Dev

在sbt中添加仅编译时子项目依赖项

来自分类Dev

Java子项目具有Eclipse中超级项目的依赖性

来自分类Dev

具有子项目的项目的Xcode代码覆盖率

来自分类Dev

具有相同源和目标的Elasticsearch重新索引

来自分类Dev

在Gephi中具有相同源和目标的边缘?

来自分类Dev

Symfony 3:具有相同源和目标的 XLIFF?

来自分类Dev

Gradle子项目不会依赖于其他子项目进行编译

来自分类Dev

如何强制Gradle重新编译所有子项目源?

来自分类Dev

对于从同一 MSBuild 任务调用的所有子项目,`ProjectStartedEventArgs.TargetNames` 是否相同?

来自分类Dev

Visual Studio包含Dll子项目标头问题

来自分类Dev

Visual Studio包含Dll子项目标头问题

Related 相关文章

  1. 1

    编译具有相同目标的不同子项目时,CMP0002错误

  2. 2

    尝试在具有子项目引用的Android项目上使用“ cordova build”时出错

  3. 3

    当子项目是当前目录时,为什么我的gradle子项目没有配置为子项目?

  4. 4

    如何使SBT子项目具有多个Scala版本?

  5. 5

    具有左右对齐文本的离子项目

  6. 6

    IntelliJ IDEA具有多个gradle子项目

  7. 7

    创建android子项目时发生错误

  8. 8

    phonegap:创建android子项目时发生错误

  9. 9

    phonegap:创建android子项目时发生错误

  10. 10

    创建一个调用子项目自定义目标的自定义目标

  11. 11

    如何在具有多个子项目的SBT项目中覆盖子项目中的设置

  12. 12

    在sbt中编译子项目

  13. 13

    对子项目使用不同的crossScalaVersions交叉编译集合项目

  14. 14

    CMake:根据其他人的子项目标头构建子项目

  15. 15

    CMake:根据其他人的子项目标头构建子项目

  16. 16

    Cmake:将子项目目标导出到主项目

  17. 17

    PowerPoint:如何对项目符号和子项目符号进行动画处理,以使它们在主幻灯片上具有不同的动画?

  18. 18

    使用非编译依赖项时如何让gradle首先构建依赖项子项目

  19. 19

    在sbt中添加仅编译时子项目依赖项

  20. 20

    Java子项目具有Eclipse中超级项目的依赖性

  21. 21

    具有子项目的项目的Xcode代码覆盖率

  22. 22

    具有相同源和目标的Elasticsearch重新索引

  23. 23

    在Gephi中具有相同源和目标的边缘?

  24. 24

    Symfony 3:具有相同源和目标的 XLIFF?

  25. 25

    Gradle子项目不会依赖于其他子项目进行编译

  26. 26

    如何强制Gradle重新编译所有子项目源?

  27. 27

    对于从同一 MSBuild 任务调用的所有子项目,`ProjectStartedEventArgs.TargetNames` 是否相同?

  28. 28

    Visual Studio包含Dll子项目标头问题

  29. 29

    Visual Studio包含Dll子项目标头问题

热门标签

归档