(CLion / CMake)为什么我的c文件保存在项目目录中时为什么不属于任何目标项目?

时间:2018-10-15 23:04:45

标签: c cmake directory clion

前言:我对c和CLion还是很陌生,所以如果我的措辞很错误,请提前道歉。

基本上,我的作业涉及两个c文件(一个“ main”,一个执行英制和公制单位之间的转换)。主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))链接到同一目录,但是我不知道如何解决这个问题。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

来自cmake manual

  

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

     

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

因此,要使用两个源文件来编译单个可执行文件,只需使用:

add_executable(target_name source1.c source2.c)