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

作者: eye5002003 (下一夜)   2018-02-27 23:08:21
※ 引述《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()
作者: clh960524 (CLH)   2018-02-28 08:29:00
謝大大回覆,我平常在用cmake生makefile的時候會把相關資料放在那個專案的build資料夾然後產生出來的executable產生在專案的根目錄(自己寫程式時給程式的讀檔習慣)不過在看完大大的回覆之後,我覺得我之前的executable產生習慣真的需要改,總之感謝回覆 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com