Access拒绝在Visual Studio中运行程序

时间:2015-08-08 08:07:03

标签: visual-studio-2012 cmake

到目前为止,我只使用Linux编写C ++代码,但我想学习在Windows中使用CMake来简化操作。

首先,我写了以下CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)  
PROJECT( CMakeWin )

SET(CMAKE_BUILD_TYPE Release)

# find opencv and set variables
Set(OpenCV_DIR C:/Users/Erik/Documents/Libraries/opencv/build)
FIND_PACKAGE(OpenCV REQUIRED)


#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

ADD_EXECUTABLE( ${PROJECT_NAME}
src/main.cpp 
)


TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

当我运行CMake(使用Visual Studio 11配置)时,它似乎正常工作,但是当我打开CMakeWin.sln项目并构建然后运行它时,我得到了

Unable to start program C:\..... The system cannot find the file 
specified.

但我也收到了

access denied.

当我直接进入Release或Debug文件夹并运行

CMakeWin.exe

它按原样运行。问题是什么?

编辑:

为了避免让visual studio试图运行ALL_BUILD,我不得不将CMakeWin设置为StartUp项目。请参阅下面的https://simtk.org/forums/viewtopic.php?f=91&t=3676和评论。

3 个答案:

答案 0 :(得分:4)

在Visual Studio中,打开项目属性对话框(右键单击解决方案资源管理器窗格中的项目,然后选择属性)。转到Debug并查看运行该应用程序的命令行。这很可能是错误的。

答案 1 :(得分:2)

CMake使用与您在Linux上使用的配置相同的配置。简单项目的通用结构是将源文件,编译文件和可执行文件放在同一目录中。所以你可以从同一个目录编译和运行。

MSVC默认配置(我不知道如何更改,我不敢)每个配置使用一个文件夹。您可以根据需要拥有它们,常见的有DebugUnicode,ReleaseUnicode,DebugAnsi和ReleaseAnsi。

共同的结构是:

  • 顶级文件夹:解决方案
    • 解决方案中每个项目一个文件夹(一个解决方案可以包含多个项目):源文件
      • 资源文件(图标等)的res文件夹(可选)
      • 每个配置文件夹,Debug + Release:对象和可执行文件

因此 by design 可执行文件与解决方案不在同一个文件夹中。您可以通过提供相对路径来执行它们:Debug\project.exe

答案 2 :(得分:0)

在Visual Studio中,查看并选择属性管理器,您将看到debug | x64和release | x64,其中添加了属性,如图所示enter image description here