硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1369|回复: 2
收起左侧

[MDK] 奇思妙想,最近觉得MDK,IAR这些可以支持下cmake文件解析读取,自动添加里面的头文件路径和相应源文件到工程

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2022-3-31 10:27:53 | 显示全部楼层 |阅读模式

现在各种开源组件里面基本都有这个cmake list文件,有了这个文件,IAR,MDK一键添加,感觉真的可以有。

[C] 纯文本查看 复制代码
function(target_sources_if_not_overridden filename)
    list(FIND TX_SRC_OVERRIDES ${filename} OVERRIDE_FOUND)
    if( OVERRIDE_FOUND EQUAL -1 )
        # message(STATUS "** Using original ${filename} from common/src **")
        target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/${filename})
    endif()
endfunction()

# These files can be overridden by setting them in the variable list named TX_SRC_OVERRIDES
target_sources_if_not_overridden("tx_thread_delete.c")
target_sources_if_not_overridden("tx_thread_reset.c")

target_sources(${PROJECT_NAME}
    PRIVATE
    # {{BEGIN_TARGET_SOURCES}}
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_allocate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_pool_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_block_release.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_allocate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_pool_search.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_byte_release.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_set.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_event_flags_set_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_initialize_high_level.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_initialize_kernel_enter.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_initialize_kernel_setup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_misra.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_priority_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_mutex_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_flush.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_front_send.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_receive.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_send.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_queue_send_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_ceiling_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_cleanup.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_semaphore_put_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_entry_exit_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_identify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_preemption_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_priority_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_relinquish.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_resume.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_shell_entry.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_sleep.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_stack_analyze.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_stack_error_handler.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_stack_error_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_suspend.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_system_preempt_check.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_system_resume.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_system_suspend.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_terminate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_time_slice.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_time_slice_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_timeout.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_thread_wait_abort.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_time_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_time_set.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_activate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_deactivate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_expiration_process.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_performance_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_performance_system_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_system_activate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_system_deactivate.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_timer_thread_entry.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_buffer_full_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_disable.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_enable.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_event_filter.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_event_unfilter.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_initialize.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_interrupt_control.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_isr_enter_insert.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_isr_exit_insert.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_object_register.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_object_unregister.c
	${CMAKE_CURRENT_LIST_DIR}/src/tx_trace_user_event_insert.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_allocate.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_pool_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_pool_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_pool_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_pool_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_block_release.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_allocate.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_pool_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_pool_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_pool_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_pool_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_byte_release.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_set.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_event_flags_set_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_mutex_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_flush.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_front_send.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_receive.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_send.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_queue_send_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_ceiling_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_prioritize.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_put.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_semaphore_put_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_entry_exit_notify.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_info_get.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_preemption_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_priority_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_relinquish.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_reset.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_resume.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_suspend.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_terminate.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_time_slice_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_thread_wait_abort.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_activate.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_change.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_create.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_deactivate.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_delete.c
	${CMAKE_CURRENT_LIST_DIR}/src/txe_timer_info_get.c

    # {{END_TARGET_SOURCES}}
)

# Add the Common/inc directory to the project include list
target_include_directories(${PROJECT_NAME} 
    PUBLIC 
    ${CMAKE_CURRENT_LIST_DIR}/inc
)

回复

使用道具 举报

38

主题

291

回帖

405

积分

高级会员

积分
405
发表于 2022-3-31 10:57:50 | 显示全部楼层
IAR下推荐看看这个: https://github.com/IARSystems/cmake-tutorial
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
 楼主| 发表于 2022-3-31 11:03:47 | 显示全部楼层
wanglehui_12 发表于 2022-3-31 10:57
IAR下推荐看看这个: https://github.com/IARSystems/cmake-tutorial

刚刚也搜到了类似的,

IAR CMAKE

https://gitlab.kitware.com/cmake/cmake/-/issues/17264
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 00:11 , Processed in 0.150135 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表