c - Eclipse/Neon.2 忽略源文件

标签 c eclipse eclipse-cdt

我正在 Eclipse/Neon.2 中处理 CDT 项目,该项目针对嵌入式目标进行交叉编译。我已经向项目中添加了一堆 .c 文件,除了(看似)一个之外,它们会自动包含在构建中。在项目目录下是 STM32F7explore/Utilities/Log/lcd_log.c 其中 STM32F7explore 是 Eclipse 项目目录。如果我尝试手动构建它,控制台窗口将显示:

09:45:52 **** Building Selected Files of configuration Debug for project STM32F7explore ****
Info: Internal Builder is used for build

09:45:52 Build Finished (took 1ms)

对于包含的文件,控制台会显示例如:

09:54:50 **** Building Selected Files of configuration Debug for project STM32F7explore ****
Info: Internal Builder is used for build
arm-none-eabi-gcc -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -D__weak=__attribute__((weak)) -D__packed=__attribute__((__packed__)) -DUSE_HAL_DRIVER -DSTM32F746xx -DLWIP_TIMEVAL_PRIVATE=0 -I../Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/CMSIS/Include -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1 -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/Third_Party/LwIP/src/include -I../Middlewares/Third_Party/LwIP/system -I../Middlewares/Third_Party/LwIP/src/include/lwip -I../Middlewares/Third_Party/LwIP/src/include/lwip/apps -I../Middlewares/Third_Party/LwIP/src/include/lwip/priv -I../Middlewares/Third_Party/LwIP/src/include/lwip/prot -I../Middlewares/Third_Party/LwIP/src/include/netif -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp -I../Middlewares/Third_Party/LwIP/src/include/netif/ppp/polarssl -I../Middlewares/Third_Party/LwIP/src/include/posix -I../Middlewares/Third_Party/LwIP/src/include/posix/sys -I../Middlewares/Third_Party/LwIP/system/arch -I../Drivers/BSP/STM32746G_Discovery -I../Utilities/Log -O0 -g3 -Wall -fmessage-length=0 -ffunction-sections -c -fmessage-length=0 -o Src/main.o ../Src/main.c 

09:54:51 Build Finished (took 224ms)

我很困惑为什么 Eclipse 不将 lcd_log.c 文件添加到构建中。我查看了文件属性弹出窗口,它们看起来相同(特别是,Eclipse 确实将 lcd_log.c 识别为 File(C 源文件)

我已从工作区中删除了 .metadata/.plugins/org.eclipse.core.runtime/.settings 并从项目中删除了 .settings 以强制 Eclipse重新生成这些并没有解决问题。

该项目位于 Github ( https://github.com/HankB/STM32F7explore ) 上,但构建的要求有点陡峭,除非您碰巧正在为 ST 嵌入式处理器进行开发。

谢谢!

最佳答案

这里发生的事情是 Log (或其父 Utilities)目录不是项目源代码的一部分,而是项目中的额外文件被排除在外。

项目资源管理器中有一些视觉线索。比较下面两个红色框:

Src vs Log

如您所见,Srcdma2d.c 文件使用的图标与 Loglcd_log.c 文件不同>.

您可以通过右键单击 -> 资源配置 -> 从构建中排除...并取消选中来重新启用文件夹或单个文件在弹出窗口中进行调试发布,如下所示:

exclude from build pop-up

您还可以通过选择项目属性 -> C/C++ 常规 -> 路径和符号 -> 源位置来控制包含的内容标签。

我建议您不要明确包含 Drivers, Inc 等,而是从根目录开始包含项目中的所有文件。为此,请选择“源位置”中的所有现有条目,然后按“删除”。然后,您应该只有一个自动重新创建的条目 /STM32F7Explore,如下所示:(请记住对调试和发布进行相同的更改)

cleaned-up source configuration

然后,如果您确实想要排除文件/文件夹,请使用资源配置重复上述步骤。 CDT 在这里将非常有用,如果您在构建中排除的源目录下有单独的文件/文件夹,您将获得另一个图标。这里我排除了一个 C 文件 (log_lcd.c) 和 Fonts 目录:

exclude the other way

与上述相关的 Eclipse CDT 的一些具体帮助:

关于c - Eclipse/Neon.2 忽略源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396521/

相关文章:

Collat​​z 序列使最后一个数字 1 重复

c - C getopt 和 getopt_long 是否仅适用于主要参数?

eclipse - 在 Eclipse 中全局禁用 Maven 工作区解析

c++ - OpenCL header 包含在 C++ 中的相对路径问题

android - 如何使用 Android NDK 修复 Eclipse CDT 错误 "Function ' isdigit' 无法解析?

c - 为什么当我使用gcc和eclipse cdt编译代码时,可执行文件的大小存在差异

c - 我对链表感到困惑。解决方案是什么?

c - 我如何判断一个函数是否进入内核

java - 使用 "Eclipse IDE for Java EE Developers"包修复 ClosedFileSystemException 错误

eclipse - m2eclipse - 没有 SCM 连接器?