2015-08-08 2 views
6

До сих пор я использовал Linux для написания кода на C++, но я хочу научиться делать это и в Windows, используя CMake для упрощения.Доступ запрещенной запущенной программы в Visual Studio

Для начала, я написал следующее: 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. 

Когда я перехожу непосредственно в папку «Отпуск» или «Отладка» и запускаю

CMakeWin.exe 

он работает так, как должен. В чем проблема?

EDIT:

Чтобы избежать Visual Studio пытается запустить ALL_BUILD, я должен был установить CMakeWin как проект StartUp. См. https://simtk.org/forums/viewtopic.php?f=91&t=3676 и комментарии ниже.

+0

Не думайте, что здесь что-то связано с 'C++'. –

ответ

4

В Visual Studio откройте диалоговое окно свойств проекта (щелкните правой кнопкой мыши по проекту в панели проводника решений и выберите свойства). Перейдите в раздел «Отладка» и посмотрите, что такое командная строка для запуска приложения. Скорее всего, это неправильно.

+0

Спасибо, я получил его для работы после некоторого рытья, но почему он искал ALLWORK вместо CMakeWin.exe в папке отладки? Должен ли я что-либо изменить в своем CMakeLists.txt? –

+0

Увы, я не использовал много CMake и никогда не имел проблем, когда у меня есть. Мои знания больше на стороне визуальной студии. Я подозреваю, что вам нужно что-то изменить в файле CMakeLists.txt. Есть ли что-либо, связанное с ALLWORK в вашей системе (или в переменных среды)? –

2

CMake использует ту же конфигурацию, что и в Linux. Общая структура простых проектов заключается в том, чтобы файлы источников, скомпилированные файлы и исполняемые файлы в одном каталоге. Таким образом, вы можете скомпилировать и запустить из одного и того же каталога.

Конфигурация по умолчанию MSVC (я не знаю, как это изменить, и я бы не рискнул) использует одну папку на конфигурации. У вас может быть столько, сколько вам нужно, обычными будут DebugUnicode, ReleaseUnicode, DebugAnsi и ReleaseAnsi.

Общая структура:

  • папку верхнего уровня: решение
    • одна папка для каждого проекта в растворе (одно решение может содержать несколько проектов): исходные файлы
      • res (необязательно) для файлов ресурсов (значки и т. д.)
      • папка на конфигурация, Debug + Release: объект и исполняемые файлы

Так что дизайн, что исполняемые файлы не находятся в той же папке, что и решения. Вы можете выполнить их оттуда, указав их относительный путь: Debug\project.exe

Смежные вопросы