首页 > 解决方案 > (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))链接到同一个目录,但我不知道如何解决这个问题。有什么建议么?

标签: ccmakedirectoryclion

解决方案


cmake手册

add_executable(<名称> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])

添加一个从命令调用中列出的源文件构建的可执行目标。(如果稍后使用 target_sources() 添加源文件,则此处可以省略源文件。)

因此,要使用两个源文件组合单个可执行文件,您只需使用:

add_executable(target_name source1.c source2.c)

推荐阅读