OMNeT++ 6.0升级后C++头文件引用失败问题求助
解决OMNeT++/INET 6.0升级后#include路径失效问题
以下是针对你的场景的具体排查和解决步骤:
适配OMNeT++ 6.0的CMake构建系统
OMNeT++ 6.0默认使用CMake作为构建系统,旧版本的Makemake配置已不再适用。你需要:- 在项目根目录的
CMakeLists.txt中,确保添加src目录作为全局include路径:include_directories(${PROJECT_SOURCE_DIR}/src) - 若项目是INET扩展,需正确引入INET依赖:
find_package(INET REQUIRED) target_link_libraries(你的项目名称 INET::INET) - 删除旧的
Makemake、.oppbuildspec文件以及out/、build/目录,重新用OMNeT++ IDE生成CMake配置并构建。
- 在项目根目录的
修正#include语句的写法
OMNeT++ 6.0对路径解析更严格,结合你的项目结构:- Clock目录下的文件引用Hardware中的头文件,应写成
#include "Hardware/xxx.h"(前提是src已被设为include根目录) - 注意文件名大小写:Linux/macOS环境下OMNeT++ 6.0大小写敏感,若头文件实际是
Hardware/XXX.h,而你写hardware/xxx.h会导致找不到。
- Clock目录下的文件引用Hardware中的头文件,应写成
若仍使用旧Makemake构建(不推荐)
如果你暂时不想切换到CMake,需修改src目录下的主Makemake文件:- 添加全局include路径:
CFLAGS += -I$(PROJECT_DIR)/src CXXFLAGS += -I$(PROJECT_DIR)/src - 确保子目录被正确声明:
SUBDIRS = Clock Hardware - 清理旧构建文件后重新执行
make clean && make。
- 添加全局include路径:
检查INET 6.0的路径配置
INET 6.0的目录结构和旧版本差异较大,确认你的项目没有硬编码旧版本的INET路径,所有依赖的INET头文件都使用#include <inet/...>的标准写法。
内容的提问来源于stack exchange,提问作者fhudge
相关产品推荐
相关产品推荐

