2015-08-08 42 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 

它按原樣運行。問題是什麼?

編輯:

爲了避免視覺工作室試圖運行ALL_BUILD,我必須設置CMakeWin爲啓動項目。見https://simtk.org/forums/viewtopic.php?f=91&t=3676和下面的評論。

+0

不要以爲這裏是與'C++'相關的東西。 –

回答

4

在Visual Studio中,打開項目屬性對話框(右鍵單擊解決方案資源管理器窗格中的項目並選擇屬性)。轉到Debug並查看運行該應用程序的命令行是什麼。這很可能是什麼錯誤。

+0

謝謝,我在挖了一些東西后纔開始工作,但是爲什麼它在調試文件夾中尋找ALLWORK而不是CMakeWin.exe?我應該改變我的CMakeLists.txt中的任何內容嗎? –

+0

唉,我沒有使用過多的CMake,並且從來沒有遇到過問題。我的知識更多的是在視覺工作室方面。我懷疑你需要改變CMakeLists.txt文件中的內容。在您的系統(或環境變量)中是否有與ALLWORK相關的東西? –

2

CMake使用與您在Linux上使用的配置相同的配置。簡單項目的常見結構是將源文件,編譯文件和可執行文件放在同一個目錄中。所以你可以編譯並從同一個目錄運行。

MSVC默認配置(我不知道如何改變這一點,我不敢)使用配置一個文件夾。你可以隨心所欲地使用它們,常見的有DebugUnicode,ReleaseUnicode,DebugAnsi和ReleaseAnsi。

的共同結構是:

  • 頂級文件夾:溶液每個項目
    • 一個文件夾中的溶液(一種解決方案可以包含多個項目):源文件
      • 一個res文件夾(可選)用於資源文件(圖標等)
      • 每個文件夾配置,調試+版本:對象和可執行文件

所以這是設計該可執行文件不在同一文件夾中的解決方案。您可以通過給出它們的相對路徑從那裏執行它們:Debug\project.exe