Cmake生成的makefile得不到规则

时间:2013-01-01 02:11:06

标签: makefile cmake

出于某种原因,CMake会生成一个错误的makefile:

make[2]: *** No rule to make target `CMakeFiles//Users/wen/projects/Space Cubes/src/Debug.cpp.dir/depend'.  Stop.
make[1]: *** [CMakeFiles/Users/wen/projects/Space Cubes/src/Debug.cpp.dir/all] Error 2

这里发生了什么,为什么它不起作用?我已经尝试过清除缓存了。

的CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(spacecubes)

if (APPLE)
    FIND_LIBRARY(OPENGL_LIBRARY OpenGL)
    FIND_LIBRARY(GLUT_LIBRARY GLUT)
    SET(EXTRA_LIBS ${OPENGL_LIBRARY} ${GLUT_LIBRARY})
else (APPLE)
    target_link_libraries(${PROJECT} gl glu glut)
endif(APPLE)

file(GLOB_RECURSE src "src/*.cpp")
add_executable(${PROJECT} ${src})

2 个答案:

答案 0 :(得分:2)

它是在几年前发布的,当我尝试同时使用add_executable和add_library时,我想说我遇到了同样的问题....我也在寻找解决方案。

cmake版本:2.8.7 系统:Ubuntu 12.04

更新

嗨,我回到这里回答这个问题。

问题发生的原因是可执行文件和lib具有相同的目标名称,在您的情况下,它是$ {project},因此cmake会在makefile中生成一些错误代码。

除Apple系统外,默认情况下,Apply使用不区分大小写的文件系统,因此如果您使用不同大写或小写的相同名称,它将以相同的错误结束。

答案 1 :(得分:0)

生成项目时,这应该会失败。

$ {PROJECT}应为空。我不知道你在哪里定义它。

添加一个线集(PROJECT" spacecubes"),它应该可以正常构建。