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

时间:2015-03-01 22:37:18

标签: c++ netbeans makefile cmake netbeans-8

我正在尝试将我在其他IDE中使用的手动创建的cmake项目导入到Windows 7上的Netbeans 8.0.2中。不用说,我的cmake配置在那里运行良好。

Netbeans好像导入目录很好。我以“自动”(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”命令完成没有问题,但不能解决问题。此外,清理失败,但“帮助”确实有效。

这似乎是IDE中的一个问题,因为如果我从项目根目录中的命令行运行make,它的构建没有问题。

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

导致此问题的导入项目可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

  

然而,当我尝试构建项目时,我收到了一个相当神秘的(Java?)错误消息:

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

您可以查看以下几点:

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

  6.   

    第一个目录(/C/MinGW/bin/make.exe)对我来说很突出,因为它不是Windows格式,但我不确定这是不正确的。

    这是好的,mingw打算 - 它使用linux / unix之类的路径。


    更新

      

    我应该使用哪个程序?

         

    许多MinGW用户遇到问题,因为他们使用的是mingw32-make.exe   MinGW安装。虽然这似乎是正确的选择,但它   实际上打破了构建。问题是这是一个非Posix   Unix make程序的实现并没有完全奏效。   事实上,这就是为什么MinGW人改名了!他们也做了一个   FAQ条目解释了为什么不应该使用mingw32-make.exe。代替,   你应该使用MSYS包中的make.exe程序。

         

    从NetBeans 6.1开始,“构建工具”面板不再允许用户访问   选择mingw32-make。如果您选择MinGW编译器集合,它将会   默认在MSYS中生成。如果找不到MSYS,它会告诉你没有   make program已被发现。

    http://wiki.netbeans.org/MinGWInCCDevelopmentPack