构建应用程序时出现 CMAKE 错误(没有为目标提供源)

问题描述 投票:0回答:1

我正在尝试构建一个将生成 .elf 文件的应用程序。此构建是使用高科技编译器和 CMAKE 环境完成的。我有一些 .c 源文件、相应的 .h 文件以及从另一个工具生成的文件。以下是我的 CMake 文件。

Cmakelists.txt

 include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/main_test.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/test/test2.cmake)

main_test.cmake

set(PROJ_NAME "Test_Project")
set(PROJ_EXECUTABLE_NAME "my_application")

add_executable(${PROJ_EXECUTABLE_NAME})

set_target_properties(${PROJ_EXECUTABLE_NAME}
    PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY "${PROJ_OUTPUT_PATH}/bin"
    OUTPUT_NAME "${PROJ_EXECUTABLE_NAME}"
    SUFFIX ".elf" # extension
)

test2 制作文件

set(MY_SRC_PATH "${PROJ_CMAKE_CONFIG_ROOT}/temp/testfiles.cmake")

if(EXISTS ${MY_SRC})
    set(MYSRC_LIB_NAME MYSRC)
    set(MYSRC_ASM_LIB_NAME MYSRC_ASM)
    set(MYSRC_INTERFACE_LIB_NAME MYSRC_INTERFACE)
    include(${MY_SRC})
    message(STATUS "files are included")
else()
    message(SEND_ERROR "Couldn't find config file: ${MY_SRC}")
endif()

target_link_libraries(${PROJ_EXECUTABLE_NAME} PUBLIC ${MYSRC_LIB_NAME} ${MYSRC_ASM_LIB_NAME} ${MYSRC_INTERFACE_LIB_NAME}) #link files

target_link_options(${PROJ_EXECUTABLE_NAME} PUBLIC -Wl,--whole-archive)

主 CMake 文件将调用另一个 make 文件并包含 .c 文件。

测试文件.cmake

include_header_all(LOCAL_INC "${MYCODE_SRC_PATH}/component/testscript/src") #.h files include function
include_source_all(LOCAL_SRC "${IMMUTABLE_SRC_PATH}/component/testscript/src") #.c files include function
include_assembly_all(LOCAL_ASM "${GENERATED_SRC_PATH}") #Generated files from another tool include function

add_library(${MYSRC_LIB_NAME} STATIC ${LOCAL_SRC})
add_library(${MYSRC_ASM_LIB_NAME} STATIC ${LOCAL_ASM})
add_library(${MYSRC_INTERFACE_LIB_NAME} INTERFACE)

target_include_directories(${MYSRC_INTERFACE_LIB_NAME} INTERFACE ${LOCAL_INC})

在构建时,我收到“没有为目标提供源”错误。所有路径都是正确的并提供给 cmake 文件。但我遇到了以下错误。

No SOURCES given to target: my_application

如果有人知道我在这里缺少什么,请帮助我解决这个错误,以便我能够理解我做错了什么。

c cmake makefile embedded elf
1个回答
0
投票

根据 @Tsyvarev 评论,我已经更新了可执行文件的

target_sources
。就像 int main(){ return 0;} 。成功了。

© www.soinside.com 2019 - 2024. All rights reserved.