我正在尝试将我在其他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)仍然在失败的命令中。我不确定该选项是否会改变这种参考。
导致此问题的导入项目可能出现什么问题?
答案 0 :(得分:1)
然而,当我尝试构建项目时,我收到了一个相当神秘的(Java?)错误消息:
这是netbeans显示的错误,告诉您它无法成功执行make
命令。通常这表示您的(mingw-)工具设置错误。
您可以查看以下几点:
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,请安装它。Versions...
中设置的工具;您可以点击{{1}}。第一个目录(/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已被发现。