Bor*_*ort 21
如果没有另外设置,编译器和链接器通常由文件扩展名确定.因此,只要文件结尾很好,您的代码就会被编译并与正确的编译器链接.
另外,如果混合使用C和C++,请记住制作正确的extern C声明.
Dea*_*n P 12
CMake 应利用文件扩展名指定的相关编译器和链接器。在使用 C 和 C++ 组合编译并链接到可执行文件的实例中,您会说:
add_executable(MyEXE main.cpp myFile.c)
Run Code Online (Sandbox Code Playgroud)
我想补充一个令人痛苦的琐碎的观点。
在这种情况下,您必须确保您的项目具有正确的语言名称参数,即 1:
project(MyProject C CXX)
Run Code Online (Sandbox Code Playgroud)
这应该在添加 CMake 文件时自动完成,但根据添加文件的顺序,参数可能仅包含 C 或 CXX。
例如,如果您仅将 C 作为语言参数,并且您的参数int main()位于 main.cpp 中,则您的程序入口点将不存在,并且编译器将忽略错误。
1或者,您可以省略语言参数,在这种情况下,将选择 C 和 CXX 的默认参数。看这里
Ran*_*ook 10
CMake自动执行此操作.您可以在CMakeLists.txt文件中自由混合使用这两种类型的文件:
. . .
add_executable(
my_program
code.cpp
more_code.c
)
Run Code Online (Sandbox Code Playgroud)
我一直这样做,它只是有效.