Visual Studio生成器(VS工程)会在EXECUTABLE_OUTPUT_PATHEXECUTABLE_OUTPUT_PATH后面自动加一个${CMAKE_BUILD_TYPE},这与其他生成器不同!

    参考文章:CMake 设置Target输出目录和后缀名

    参考写法

    1. # [生成目录]
    2. set(Project_OUTPUT_DIR ${Project_Root_Dir}/bin/${platform_type}/${CMAKE_BUILD_TYPE})
    3. ##禁止使用EXECUTABLE_OUTPUT_PATH、LIBRARY_OUTPUT_PATH的值,请使用Project_OUTPUT_DIR(因为VS环境与非VS环境不一样)
    4. message(STATUS "[Project output directory] ${Project_OUTPUT_DIR}")
    5. if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
    6. #在Visual Studio生成器(即VS工程)下,会在EXECUTABLE_OUTPUT_PATH、EXECUTABLE_OUTPUT_PATH后面自动加一个${CMAKE_BUILD_TYPE}
    7. SET(EXECUTABLE_OUTPUT_PATH ${Project_Root_Dir}/bin/${platform_type}) #可执行文件输出目录
    8. set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) #库文件输出目录
    9. else()
    10. #在其他环境下,不会动,原来是什么就是什么
    11. SET(EXECUTABLE_OUTPUT_PATH ${Project_Root_Dir}/bin/${platform_type}/${CMAKE_BUILD_TYPE})
    12. set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
    13. endif()
    14. # [lib目录]
    15. set(Project_Lib_DIR ${Project_OUTPUT_DIR})
    16. link_directories(${LIBRARY_OUTPUT_PATH}) #全局,子模块中不需要添加了
    17. message(STATUS "[Project Library directory] ${Project_Lib_DIR}")