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}")
