【发布时间】:2023-03-16 22:38:01
【问题描述】:
我正在从事一个模拟项目:从目标平台获取嵌入式 C 代码库,并尝试在主机计算机上对其进行模拟以进行调试或单步执行代码。
操作系统:Ubuntu Linux 14.04,IDE:CodeLite,Makefile 生成器:Cmake。我对如何为项目编写 CMakeLists.txt 感到困惑。以下是代码库的结构(全部用C编写):
|ARQSim\
|-->ARQSim.h
|-->ARQSim.c
|-->BaseStationCode\
| |->downlink.c
| |->neoncopy.c
| |->armCore\
| | |->common\
| | | |->Bsconfig.h
| | | |->config.h
| | |->MacSource\
| | | |->lib\
| | | | |->arqCommon.h
| | | | |->OverTheAir.h
| | | |->source\
| | | | |->beacon.c
| | | | |->proxyDhcp.c
| | | | |->ARQ\
| | | | | |->arqCommon.c
| | | | | |->arqInterface.c
| | | | | |->fragmentation\
| | | | | | |->fragBookkeeping.c
| | | | | | |->fragProcessAck.c
| | | | | |->reassembly\
| | | | | | |->reasmBookkeeping.c
| | | | | | |->reasmProcessAck.c
我对 Cmake 完全陌生。我在 StackOverflow 上阅读了很多关于 CMake 和线程的资源。但我每次都感到困惑。我有几个问题:
- 我需要根目录下只有一个 CMakeLists.txt 还是每个目录都需要一个不同的 CMakeLists.txt 文件?
- 如何在 CMakeLists.txt 中递归添加源文件?
- 为了生成 MakeFile,我需要在 CMakeLists.txt 中放入哪些基本命令?
基于上述代码结构的示例将不胜感激。
【问题讨论】:
-
上面列出的结构似乎一团糟。您可能需要先将其分成几个项目。
-
你的目标没有调试器吗?
-
@VTT 是的,我同意,结构混乱了,我还没有在这里发布整棵树。我希望我有时间来组织它,但我需要尽快开始调试,因此我采用了嵌入式代码库。谢谢
-
@ChristianGibbons :我们在嵌入式平台上有一个调试器。但是,它在 No-OS-Bare-Metal-while(1) 上运行并且在平台上进行调试非常疯狂。目标平台 (OMAP) 依赖于来自板载 FPGA 和 DSP 的持续中断反馈。单步停止此反馈(无线调制停止,因此没有来自 DSP 的反馈)。我要调试的边缘情况需要始终打开无线调制。这就是为什么我们试图在主机 PC 上模拟场景并单步进入它的原因。
标签: c linux makefile cmake codelite