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