Cmake无法用C ++确定链接器语言[英] CMake unable to determine linker language with C++

本文是小编为大家收集整理的关于Cmake无法用C ++确定链接器语言的处理方法,想解了Cmake无法用C ++确定链接器语言的问题怎么解决?Cmake无法用C ++确定链接器语言问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试使用Visual Studio 2010和Cygwin在Windows 7 X64上运行Cmake Hello World程序,但似乎无法使用.我的目录结构如下:

HelloWorld
-- CMakeLists.txt
-- src/
-- -- CMakeLists.txt
-- -- main.cpp
-- build/

我做cd build,然后是cmake ..,并获得一个错误说

CMake Error: CMake can not determine linker language for target:helloworld
CMake Error: Cannot determine link language for target "helloworld".

但是,如果我将main.cpp的扩展名更改为filsystem和src/CMakeLists.txt中的main.c.一切正常.从Visual Studio命令提示(Visual Studio Solution Generator)和Cygwin终端(Unix Makefiles Generator)运行的情况.

知道为什么此代码不起作用?

cmakelists.txt

PROJECT(HelloWorld C)
cmake_minimum_required(VERSION 2.8)

# include the cmake modules directory
set(CMAKE_MODULE_PATH ${HelloWorld_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

add_subdirectory(src)

src/cmakelists.txt

# Include the directory itself as a path to include directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Create a variable called helloworld_SOURCES containing all .cpp files:
set(HelloWorld_SOURCES main.cpp)

# Create an executable file called helloworld from sources:
add_executable(hello ${HelloWorld_SOURCES })

src/main.cpp

int main()
{
  return 0;
}

推荐答案

尝试更改

PROJECT(HelloWorld C)

进入

PROJECT(HelloWorld C CXX)

或只是

PROJECT(HelloWorld)

请参阅: http:http://www.cmake. org/cmake/help/v2.8.8/cmake.html#命令:project

其他推荐答案

我也有您提到的错误:

CMake Error: CMake can not determine linker language for target:helloworld
CMake Error: Cannot determine link language for target "helloworld".

在我的情况下,这是由于具有.cc扩展名的C ++文件.

如果Cmake无法正确确定代码的语言,则可以使用以下内容:

set_target_properties(hello PROPERTIES LINKER_LANGUAGE CXX)

建议将语言附加到project()语句中的接受答案简单地添加了更严格的检查使用了哪种语言(根据文档),但这对我没有帮助:

您可以选择地指定项目支持的哪些语言. 示例语言是CXX(即C ++),C,Fortran等.默认情况下C 和CXX已启用.例如.如果您没有C ++编译器,则可以 通过明确列出所需的语言来禁用支票 支持,例如C.通过使用特殊语言"无"所有检查 对于任何语言,都可以禁用.如果存在称为变量 cmake_project__include_file,文件指向的文件 变量将作为项目命令的最后一步.

其他推荐答案

就我而言,仅仅是因为目标中没有源文件.我的所有代码都是标头文件中带有源代码的模板.添加一个空文件.cpp解决了问题.

本文地址:https://www.itbaoku.cn/post/358976.html