Re: [問題] VS2017和cmake 執行檔輸出位置問題

看板C_and_CPP (C/C++)作者 (下一夜)時間8年前 (2018/02/27 15:08), 編輯推噓1(105)
留言6則, 1人參與, 8年前最新討論串2/2 (看更多)
※ 引述《clh960524 (CLH)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Win7 : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : Visual Studio 2017 IDE (Visual Studio 15.5) : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : 問題(Question): : 最近在使用VS2017裡面的CMake功能 : 在程式build完成之後 : 發現VS會把build出來的binary放到我安裝CMake安裝位置裡的CMakeBuilds資料夾 : 想請問一下VS2017的CMake功能可不可以指定binary的輸出位置 : 餵入的資料(Input): : CMakeLists.txt : 詳細內容在"程式碼"段落 : 預期的正確結果(Expected Output): : binary會出現在目前project的根目錄 : 錯誤結果(Wrong Output): : binary會出現在CMake安裝位置裡的CMakeBuilds資料夾 : 程式碼(Code):(請善用置底文網頁, 記得排版) : https://gist.github.com/Cuda-Chen/301e24154e1e936c6a90cc2a90529b71 : CMakeLists.txt 文字好讀版: : # CMake minimum version requirment : cmake_minimum_required(VERSION 2.8) : # executable name : project(sobel_mfnn) : # set executable output path : #set(EXECUTABLE_OUTPUT_PATH "..") : set(CMAKE_BUILD_TYPE Debug) : set(SRCS : main.cpp : ) : add_executable(sobel_mfnn ${SRCS}) : 補充說明(Supplement): : 無 大概是改成這樣吧 我沒有用2017版,但是有在使用2010、2012、2013、2015 所以說不定我的寫法也過時了 project(sobel_mfnn) cmake_minimum_required(VERSION 2.8) # set(CMAKE_BUILD_TYPE Debug) Visual Studio 好像不鳥這個寫法 # 必須 FORCE 叫 IDE 乖乖聽話 set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "whatever" FORCE) # 大部分人會丟到 PROJECT_BINARY_DIR # 你確定要丟 PROJECT_SOURCE_DIR 嗎? set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(SRCS main.cpp) add_executable(sobel_mfnn ${SRCS}) # 只有 Visual Studio 才需要下面這段 # 會阻止 VS 建立不必要的資料夾 if(MSVC) set_target_properties(sobel_mfnn PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR} LIBRARY_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR} LIBRARY_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR} RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR} RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR} ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR} ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR} ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR} ) endif() -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.54.24 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1519715304.A.0B8.html

02/28 00:29, 8年前 , 1F
謝大大回覆,我平常在用cmake生makefile的時候
02/28 00:29, 1F

02/28 00:30, 8年前 , 2F
會把相關資料放在那個專案的build資料夾
02/28 00:30, 2F

02/28 00:32, 8年前 , 3F
然後產生出來的executable產生在專案的根目錄
02/28 00:32, 3F

02/28 00:33, 8年前 , 4F
(自己寫程式時給程式的讀檔習慣)
02/28 00:33, 4F

02/28 00:34, 8年前 , 5F
不過在看完大大的回覆之後,我覺得我之前的executable
02/28 00:34, 5F

02/28 00:35, 8年前 , 6F
產生習慣真的需要改,總之感謝回覆 :)
02/28 00:35, 6F
文章代碼(AID): #1QbGFe2u (C_and_CPP)
文章代碼(AID): #1QbGFe2u (C_and_CPP)