Visual Studio生成器(VS工程)会在EXECUTABLE_OUTPUT_PATH
、EXECUTABLE_OUTPUT_PATH
后面自动加一个${CMAKE_BUILD_TYPE}
,这与其他生成器不同!
参考写法
# [生成目录]
set(Project_OUTPUT_DIR ${Project_Root_Dir}/bin/${platform_type}/${CMAKE_BUILD_TYPE})
##禁止使用EXECUTABLE_OUTPUT_PATH、LIBRARY_OUTPUT_PATH的值,请使用Project_OUTPUT_DIR(因为VS环境与非VS环境不一样)
message(STATUS "[Project output directory] ${Project_OUTPUT_DIR}")
if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
#在Visual Studio生成器(即VS工程)下,会在EXECUTABLE_OUTPUT_PATH、EXECUTABLE_OUTPUT_PATH后面自动加一个${CMAKE_BUILD_TYPE}
SET(EXECUTABLE_OUTPUT_PATH ${Project_Root_Dir}/bin/${platform_type}) #可执行文件输出目录
set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) #库文件输出目录
else()
#在其他环境下,不会动,原来是什么就是什么
SET(EXECUTABLE_OUTPUT_PATH ${Project_Root_Dir}/bin/${platform_type}/${CMAKE_BUILD_TYPE})
set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
endif()
# [lib目录]
set(Project_Lib_DIR ${Project_OUTPUT_DIR})
link_directories(${LIBRARY_OUTPUT_PATH}) #全局,子模块中不需要添加了
message(STATUS "[Project Library directory] ${Project_Lib_DIR}")