【软件入门】 CLion在工程中添加目录&新文件

CLion在工程中添加目录&新文件

在这里插入图片描述

1.添加新目录

在左侧项目栏中,如果你想在大文件夹下新建,则右键工程名;如果你想在子文件夹中新建,比如在Core目录下新增两个文件夹,则右键Core即可。还是建议大家把.c和.h分开,把代码分类放好:

在这里插入图片描述

如果大家用过Keil的话,应该会有印象:先添加文件夹,再添加文件,最后还需要把包含.h的文件夹放到一个路径下面。如果不进行最后一步,那么编译的时候就找不到头文件。Keil中是这样设置的:

在这里插入图片描述

在CLion中,我们同样也需要把包含头文件的路径填到相应的位置,与Keil的设置不同,在CLion中我们是将路径写到CMakeList.txt文件中去。打开文件,然后找到这一行:

include_directories(Core/Inc Drivers/STM32L4xx_HAL_Driver/Inc Drivers/STM32L4xx_HAL_Driver/Inc/Legacy Drivers/CMSIS/Device/ST/STM32L4xx/Include Drivers/CMSIS/Include)

这里面的路径是用空格隔开的,格式为:

include_directories(path1 path2 path3)

作者新建的文件夹中,UserInc是用于存放头文件的,把这个Core/UserInc这一路径加到其中:

include_directories(Core/Inc Core/UserInc Drivers/STM32L4xx_HAL_Driver/Inc Drivers/STM32L4xx_HAL_Driver/Inc/Legacy Drivers/CMSIS/Device/ST/STM32L4xx/Include Drivers/CMSIS/Include)

这样新目录就添加完成了。

2.添加新文件

添加新文件有两种方式,一种方式从文件夹中进行操作,如把写好的文件复制进来,或者是直接在文件夹中新建一个文件,然后再把文件添加进来;还有一种方式是在CLion中直接添加文件到工程,然后自动在文件夹中生成新的文件。分别来讲一下怎么操作。

2.1.文件夹中添加

我们还是首先来回忆一下Keil中添加的方法。假设我们在Core/Src中添加了一个test.c文件,如下所示:

在这里插入图片描述

打开Keil,发现工程并不能找到这个文件:

在这里插入图片描述

我们在Keil中是如何操作的呢?双击Core文件夹,把test.c手动添加进去:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBPjRRy7-1657938304344)(…/…/Typora图像保存/image-20220716095721848.png)]
在这里插入图片描述

这样test.c才算加入到工程中:

在这里插入图片描述

在CLion中也类似。我们在Core/Src文件夹中添加test.c文件:

在这里插入图片描述

打开CLion,发现工程可以找到这个文件,但是这个文件并不是真的添加进来了,只是能看到而已!

在这里插入图片描述

我们在test.c和相应的test.h中添加一个test函数:

void test(void)
{
	;
}

然后在main.c中调用,编译报错如下:

在这里插入图片描述

这就是因为我们在CLion中没有进行和Keil类似的添加test.c到工程的一步。在CLion中如何进行呢?右键test.c,点击这个重新加载即可:

在这里插入图片描述

再次编译,即可编译成功:

在这里插入图片描述

2.2.在CLion中添加

我们右键Src文件夹,添加一个.c文件:

在这里插入图片描述

注意添加的时候改为.c,且不勾选下面的一项:

在这里插入图片描述

编写test函数,编译试一下:

在这里插入图片描述

没有问题。两种方法都可以,读者可以根据自己的情况进行选择。

### 如何在 ROS 中通过 CLion 实现图像识别功能 要在 ROS 环境下使用 CLion 开发并实现图像识别功能,需要完成以下几个方面的配置和开发: #### 1. 安装必要的依赖项 为了支持图像处理功能,通常需要安装 OpenCV 和其他相关库。可以通过以下命令安装所需的依赖项: ```bash sudo apt-get update sudo apt-get install ros-$<rosdistro>-cv-bridge python-opencv libopencv-dev ``` 其中 `<rosdistro>` 是当前使用的 ROS 发行版名称(如 `melodic` 或 `noetic`)。这一步确保了 ROS 可以与 OpenCV 结合使用[^1]。 #### 2. 配置 CLion 支持 ROS 工作空间 CLion 不像 Catkin 工具那样原生支持 ROS 构建流程,因此需要手动设置 CMakeLists.txt 文件来兼容 CLion 的构建机制。以下是具体步骤: ##### (a) 修改 CMakeLists.txt 文件 打开 ROS 包中的 `CMakeLists.txt` 文件,并添加如下内容以启用调试模式和支持 CLion 编译器选项: ```cmake set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g") find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(<your_target> ${catkin_LIBRARIES} ${OpenCV_LIBS}) ``` ##### (b) 设置环境变量 为了让 CLion 正确加载 ROS 环境变量,需编辑 `.bashrc` 文件并将以下内容追加到文件末尾: ```bash source /opt/ros/<rosdistro>/setup.bash export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:<path_to_your_ws> ``` 之后重启动终端或执行 `source ~/.bashrc` 命令使更改生效。 #### 3. 使用 CLion 打开项目 在 CLion 中导入 ROS 工程时,可以选择直接指向包含源码的工作目录路径。如果遇到编译错误,则可能是因为未正确指定工具链或缺少某些头文件链接关系;此时应仔细核对上述配置过程是否遗漏任何细节部分。 #### 4. 图像识别节点设计 下面展示了一个简单的订阅摄像头话题并进行基本灰度转换的例子作为入门级演示程序代码片段: ```cpp #include "ros/ros.h" #include "sensor_msgs/Image.h" #include "cv_bridge/cv_bridge.h" #include <opencv2/opencv.hpp> void imageCallback(const sensor_msgs::ImageConstPtr& msg){ try{ cv::Mat img = cv_bridge::toCvShare(msg, "mono8")->image; cv::imshow("view", img); cv::waitKey(30); }catch(cv_bridge::Exception &e){ ROS_ERROR("Could not convert from '%s' to 'mono8'.",msg->encoding.c_str()); } } int main(int argc,char **argv){ ros::init(argc, argv,"image_converter"); ros::NodeHandle nh; ros::Subscriber sub = nh.subscribe("/camera/image_raw",1,imageCallback); ros::spin(); return 0; } ``` 此段代码实现了从 `/camera/image_raw` 主题接收数据流并通过 OpenCV 库显示出来。实际应用中可根据需求替换为更复杂的视觉算法逻辑[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值