c++ - 关于 CMake 错误 : No source given to target 的问题

标签 c++ cmake debian eclipse-cdt freertos

我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中,但出现错误。我正在运行 debian 10,我的 cmake 版本是 3.13.4。 cmake 的文件可以在 this git repo 找到.当我运行以下命令时:

frank@debian:~/temp2/build$ cmake ../../temp2/AM335X-FreeRTOS-lwip/ -G"Eclipse CDT4 - Unix Makefiles"
我收到以下错误:
    CMake Error at ProjectIncludes.cmake:46 (add_library):
  No SOURCES given to target: lib_third_party_ti_platform_beaglebone
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:30 (add_library):
  No SOURCES given to target: lib_third_party_ti_utils
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:38 (add_library):
  No SOURCES given to target: lib_third_party_ti_mmcsdlib
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:54 (add_library):
  No SOURCES given to target: lib_third_party_ti_nandlib
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at CMakeLists.txt:15 (add_executable):
  No SOURCES given to target: freeRTOSBBB.elf


CMake Error at ProjectIncludes.cmake:23 (add_library):
  No SOURCES given to target: lib_third_party_ti_drivers
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:115 (add_library):
  No SOURCES given to target:
  lib_third_party_amazon_freertos_kernel_portable_MemMang
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:86 (add_library):
  No SOURCES given to target:
  lib_third_party_amazon_libraries_3rdparty_lwip_src
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:101 (add_library):
  No SOURCES given to target: src_portable_lwip_ports_cpsw_netif
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:106 (add_library):
  No SOURCES given to target: lib_third_party_amazon_freertos_kernel
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:111 (add_library):
  No SOURCES given to target:
  src_portable_FreeRTOS_portable_GCC_ARM_CA8_amm335x
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:65 (add_library):
  No SOURCES given to target: lib_third_party_ti_system_config_armv7a
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:134 (add_library):
  No SOURCES given to target: src_application
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:120 (add_library):
  No SOURCES given to target: src_portable_AM335X
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)


CMake Error at ProjectIncludes.cmake:129 (add_library):
  No SOURCES given to target: src_portable_ported_aws_bufpool
Call Stack (most recent call first):
  CMakeLists.txt:33 (include)

最佳答案

该错误说明了它的含义:没有库的来源。

#adding entries for lib_third_party_ti_mmcsdlib
    include_directories("${PROJECT_SOURCE_DIR}/lib/third_party/ti/mmcsdlib")
    include_directories("${PROJECT_SOURCE_DIR}/lib/third_party/ti/mmcsdlib/include")
    add_library(lib_third_party_ti_mmcsdlib "") # NO SOURCES HERE!!!!
    target_compile_definitions(lib_third_party_ti_mmcsdlib 
        PRIVATE -DBOOT=MMCSD -DCONSOLE=UARTCONSOLE
    )
    subdirs("${PROJECT_SOURCE_DIR}/lib/third_party/ti/mmcsdlib")
    subdirs("${PROJECT_SOURCE_DIR}/lib/third_party/ti/mmcsdlib/include")
您应该阅读有关 add_library 的文档在 cmake 中。如果您不提供任何源文件,则应将其声明为 INTERFACE

add_library(LibName INTERFACE)


在这种情况下,不会生成编译目标。
否则,您可以将其声明为 IMPORTED ,那么 cmake 也不会尝试创建编译目标。
对于 SHARED , STATICOBJECT你总是需要提供资源。
您应该检查 ProjectIncludes.cmake对于您真正想做的事情:编译新库或导入它们。

关于c++ - 关于 CMake 错误 : No source given to target 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65415872/

相关文章:

python - Debian - python 有两个 dist-packages?我应该使用哪一个?

linux控制台如何将代码页更改为dos cp437

c++ - 是否可以从可执行文件中取消链接目标文件

c++ - 几何变换

c++ - 链接到通过 cmake 使用 boost 的库时删除 boost 依赖项

c++ - OSX 上的 CMake 和 Boost - 没有制定目标的规则

visual-studio - CMake "NMake Makefiles"生成器无法编译

debian - 如何在 debian 上安装 apcu 作为 php7 扩展

c++ - 在多大程度上允许将 C 和 C++ 结合使用?

c++ - 在 Xcode 中为 OpenCV 组合两个 c++ 文件(使用未声明的标识符 CVSquares)