将main.cpp更改为main.c,并停止在Clion上使用CMake构建

Changed main.cpp to main.c and stopped building with CMake on Clion

本文关键字:main Clion 构建 CMake cpp      更新时间:2023-10-16

我的CMake文件包含以下内容

cmake_minimum_required(VERSION 3.3)
project(MyProject)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
set(SOURCE_FILES main.c vector.h aLib.h vector.c)
add_executable(MyProject ${SOURCE_FILES})

一旦我将main.cpp更改为main.c,我就收到了错误

/

home/MyProject/main.c:203:未定义对pthread_create' /home/MyProject/main.c:210: undefined reference to pthread_join的引用

它曾经在.cpp时工作.在终端中,如果我运行gcc -pthread main.c vector.c它编译器没有问题。一定有一些CMake命令错误,但我不是很熟悉。另外我想我需要删除-std=c++11

将文件的扩展名"main.cpp"更改为"main.c"表示编译器处理的不是C++文件,而是 C 文件。

编译 C 与编译 C++ 不同,

因此您需要更改构建规则以匹配,可能您还必须重写文件中的代码以遵守 C 标准(C++标准不同),并且您可能很难将 C 启动器链接到其他C++项, 因此,您可能必须找到替代方案(或者如果您有它们的源代码,请重写它们)。

您不能只更改文件名并期望自动完成此工作。 这相当于将"myfile.docx"更改为"myfile.pdf,并认为文件的内部会将自身从Micosoft Word文档重写为PDF。

如果你想保留.c扩展名,但仍使用C++编译器而不是C编译器进行编译,你也可以使用如下的东西:

set_source_files_properties(main.c 
  PROPERTIES LANGUAGE CXX)