我正试图在Windows 7 x64上运行一个包含Visual Studio 2010和Cygwin的cmake hello world程序,但两个程序都无法运行.我的目录 struct 如下:

HelloWorld
-- 克马克主义者.txt
-- src/
-- -- 克马克主义者.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".

但是,如果我将文件系统和src/克马克主义者.txt中的main.cpp扩展名都更改为main.c,则一切都按预期工作.这是从Visual Studio命令提示符(Visual Studio解决方案生成器)和Cygwin终端(Unix Makefiles生成器)运行的情况.

你知道为什么这个代码不起作用吗?

克马克主义者.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/克马克主义者.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://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:project

C++相关问答推荐

如何在C中的空指针函数中传递浮点值

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

从STdin读写超过4096个字节

这是一个合法的C Strdup函数吗?

整型文字后缀在左移中的用途

如何在下面的C代码中正确管理内存?

变量的作用域是否在C中的循环未定义行为或实现定义行为的参数中初始化?

在函数外部使用内联ASM时无法指定操作数

是否定义了此函数的行为?

判断系统命令返回值的正确方法

将数字的每一位数平方,并使用C将它们连接为一个数字(程序不能正确处理0)

将某些内容添加到链接列表时,列表中的其他项将使用最后添加的项的名称

Linux/C:带有子进程的进程在添加waitid后都挂起

访问未对齐联合的成员是否为未定义行为,即使被访问的成员已充分对齐?

在分配内存后使用指针是未定义的行为吗?

我的代码可以与一个编译器一起使用,但不能与其他编译器一起使用

为什么 Linux 共享库 .so 在内存中可能比在磁盘上大?

C语言程序流程解释

如何使用 raylib 显示数组中的图像

C23 中的 [[reproducible]] 和 [[unsequenced]] 属性是什么?什么时候应该使用它们?