从现有 cmake 应用程序导入的 Netbeans 项目无法生成 Windows 上的文件系统错误

Netbeans project imported from existing cmake application fails to build with filesystem error on Windows

我正在尝试将我一直在另一个 IDE 中使用的手动创建的 cmake 项目导入 Windows 7 上的 Netbeans 8.0.2。不用说,我的 cmake 配置有效很好。

Netbeans 似乎可以正常导入目录。我以 "automatic" (cmake) 模式导入它。但是,当我尝试构建项目时,我收到一条相当神秘的 (Java?) 错误消息:

Makefile:76: recipe for target 'all' failed
process_begin: CreateProcess(NULL, /C/MinGW/bin/make.exe -f CMakeFiles/Makefile2 all, ...) failed.
make (e=2): The system cannot find the file specified.

对Java知之甚少,我不确定如何解释这个错误。第一个目录 (/C/MinGW/bin/make.exe) 在我看来不是 Windows 格式,但我不确定这是否不正确。我确实有一个该名称的文件,因为我复制了名称较长的 mingw make 二进制文件,因此我只需要键入 "make".

假设这是 运行 在项目根目录中,并且第一个目录的格式正确,我认为找到这些文件没有任何问题。

我的CMakeLists.txt是:

cmake_minimum_required(VERSION 2.8.4)

set(Project_Name "Test")
set(Test_VERSION_MAJOR 1)
set(Test_VERSION_MINOR 0)

project(${Project_Name})

include_directories(
    "${CMAKE_CURRENT_SOURCE_DIR}/inc"
    "${CMAKE_CURRENT_SOURCE_DIR}/inc/SDL"
    "C:/Users/Bakaiya/Documents/ogre/OgreMain/include"
)
file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")

link_directories(${CMAKE_CURRENT_SOURCE_DIR} ${OPENGL_LIBRARIES})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_executable(${Project_Name} ${SOURCE_FILES})
target_link_libraries(${Project_Name} SDL2main SDL2 OgreMain) #Ogre

运行 IDE 中的 "generate makefile" 命令没有问题地完成,但没有解决问题。此外,清理失败,但 "help" 确实有效。

这似乎是 IDE 中的一个问题,因为如果我 运行 从项目根目录中的命令行创建,它可以毫无问题地构建。

另外,我在C/C++ -> 项目选项下摆弄了文件路径模式设置,但没有任何反应。即使设置为绝对,似乎是相对路径(CMakeFiles/Makefile2)的内容仍然在失败的命令中。我不确定该选项是否会改变那种参考。

这个导入的项目可能有什么问题导致这个问题?

However, when I attempt to build the project, I get a rather cryptic (Java?) error message:

这是 netbeans 显示的错误,它无法成功执行 make 命令。通常这表示您的 (mingw-) 工具设置错误。

您可以检查以下几点:

  1. 不要使用 mingw/bin 中的 make,你必须使用 mingw/msys/.. 中的那个。在mingw的msys文件夹中有一个mingw make,通常是C:\<Path to MSYS>\<Version>\bin\make.exe - 这个bin-path也必须在PATH环境变量中设置!如果安装 mingw 时未安装 MSys,请安装它。
  2. 请检查Tools -> Options -> C/C++ -> Build Tools中设置的工具;您可以通过单击 Versions....
  3. 来测试它们
  4. (如果存在)清理 CMake 生成的 文件并清理 cmake 的缓存。如果尚未完成,请按照 here.
  5. 所述使用源外构建
  6. 你能从终端构建你的项目吗(没有 netbeans)?

The first directory (/C/MinGW/bin/make.exe) stands out to me as not being in Windows-format, but I am not sure if that's incorrect.

这没问题,并且是 mingw 设计的 - 它使用 linux / unix 之类的路径。


更新

Which make program should I use?

Many MinGW users have a problem because they use mingw32-make.exe from the MinGW installation. While this seems like the right choice, it actually breaks the build. The problem is that this is a non-Posix implementation of the Unix make program and doesn't work well at all. In fact, thats why the MinGW people renamed it! They've also made a FAQ entry explaining why you should not use mingw32-make.exe. Instead, you should use the make.exe program from the MSYS package.

As of NetBeans 6.1, the Build Tools panel no longer allows a user to select mingw32-make. If you choose a MinGW compiler collection it will default to make in MSYS. If MSYS is not found, it will tell you no make program has been found.

(http://wiki.netbeans.org/MinGWInCCDevelopmentPack)