c - (CLion/CMake) 为什么我的 c 文件保存在项目目录中时不属于任何目标项目?
问题描述
前言:我对 c 和 CLion 很陌生,所以如果我的措辞非常错误,请提前道歉。
本质上,我有一个涉及两个 c 文件的作业(一个“主”文件,一个执行英制和公制单位之间的转换)。主 c 文件只是简单地 #include-s 转换文件,在转换文件中执行一个函数,并将结果值打印给用户。很简单,但每次我尝试运行它时都会收到一条消息:
“未定义对‘转换’的引用”
我试图解决这个问题,我唯一的想法与conversion.c 顶部的横幅有关,上面写着“此文件不属于任何项目目标,代码洞察功能可能无法正常工作。” . 我不明白为什么我会收到这条消息,因为conversion.c 和main.c 都在主项目目录中,而且这个设置在我之前的作业中运行得非常好。
我已经在网上搜索了解决方案,唯一似乎有意义的是更新我的 CMakeLists.txt 文件以包含add_executable(project conversion.c)。这是我添加此行之前的 CMakeLists.txt 文件的样子:
cmake_minimum_required(VERSION 3.12)
project(project C)
set(CMAKE_C_STANDARD 11)
add_executable(project main.c)
但是,当我添加它时,我得到了错误:
CMake Error at CMakeLists.txt:7 (add_executable):
add_executable cannot create target "directory" because another
target with the same name already exists. The existing target is an
executable created in source directory
"/home/john_s/CLionProjects/project". See documentation for
policy CMP0002 for more details.
大概这是因为我的前一行(add_executable(project main.c))链接到同一个目录,但我不知道如何解决这个问题。有什么建议么?
解决方案
从cmake手册:
add_executable(<名称> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])
添加一个从命令调用中列出的源文件构建的可执行目标。(如果稍后使用 target_sources() 添加源文件,则此处可以省略源文件。)
因此,要使用两个源文件组合单个可执行文件,您只需使用:
add_executable(target_name source1.c source2.c)
推荐阅读
- java - Eclipse 数据源资源管理器 - 无法创建视图:org.eclipse.datatools.connectivity.DataSourceExplorerNavigator (java)
- python - 使用带有 sample_weight 的 numpy 从头开始计算岭回归
- html - 尝试使用 CSS 和弹性框将段落移动到按钮下的下一行
- node.js - 通过 cron 作业启动交互式 CLI 应用程序
- sql - 在 Oracle SQL Query 中转换 Text 中的一系列 Number 值
- youtube-data-api - 评论列表片段中未返回 videoId
- google-cloud-monitoring - 在 Cloud 任务队列中有超过一定数量的任务且重试值 > 0 时触发 GCP 监控中的警报
- azure-log-analytics - Azure Log Analytics:无法解析表或列或标量表达式
- generics - 移出泛型类型的共享引用
- python - Python中的“dummy_func”是什么