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