代码之家  ›  专栏  ›  技术社区  ›  thekidder

Windows上的cmake运行时间_超时_延迟

  •  27
  • thekidder  · 技术社区  · 17 年前

    我在用 RUNTIME_OUTPUT_DIRECTORY bin/ 我存储数据文件的目录。在Linux上,这很好用。在Windows上,可执行文件被放置在 Debug / Release 子目录取决于构建类型。有什么办法去吗 将可执行文件复制到正确的目录,或者(更好的是)完全停止使用这些子目录?

    8 回复  |  直到 17 年前
        1
  •  16
  •   Community Mohan Dere    9 年前

    我一直在使用由 Ogapo 多年来。它奏效了。

    使用全局 CMAKE_<ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION> <ARTIFACT>_OUTPUT_DIRECTORY_<CONFIGURATION> 属性,如:

    SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
    SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
    SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
    SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
    SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}")
    SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}")
    
        2
  •  11
  •   Ogapo    17 年前

    我不确定这些目录是故意的还是错误的,但冒着向前不兼容的风险,你可以添加:

    if (MSVC_IDE)
        # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows
        set_target_properties (${NAME} PROPERTIES PREFIX "../")
    endif()
    

    这对我很有效

        4
  •  1
  •   verbalshadow    17 年前

    CMAKE_C_FLAGS 
        the compiler flags for compiling C sources. Note you can also specify switches with ADD_DEFINITIONS(). 
    CMAKE_C_FLAGS_DEBUG 
        compiler flags for compiling a debug build from C sources. 
    CMAKE_C_FLAGS_RELEASE 
        compiler flags for compiling a release build from C sources. 
    CMAKE_C_FLAGS_RELWITHDEBINFO 
        compiler flags for compiling a release build with debug flags from C sources. 
    

    RUNTIME_OUTPUT_DIRECTORY_DEBUG && RUNTIME_OUTPUT_DIRECTORY_RELEASE 同样的事情可能会奏效。

        5
  •  1
  •   thekidder    17 年前

    CMake install commands 对于我的每个目标和数据文件,并将MSVC调试器设置为在安装目录外运行。这还有使用CPack创建安装程序的额外好处。

        6
  •  1
  •   Mathemaster    15 年前

    对我来说,全球:

    set(CMAKE_STATIC_LIBRARY_PREFIX "../lib")
    set(CMAKE_SHARED_LIBRARY_PREFIX "../lib")
    

    已经完成了这项工作,所以我不必为每个库都设置它(CMake 2.8.4)

        7
  •  -5
  •   Code Maverick Ashish Gupta    12 年前

    cmake说:

    Multi-Config)将每个配置的子目录附加到指定的

    set_target_properties(foo PROPERTIES ARCHIVE_OUTPUT_DIRECTORY $<1:${PROJECT_SOURCE_DIR}/lib>)
    set_target_properties(foo PROPERTIES LIBRARY_OUTPUT_DIRECTORY $<1:${PROJECT_SOURCE_DIR}/lib>)
    set_target_properties(foo PROPERTIES RUNTIME_OUTPUT_DIRECTORY $<1:${PROJECT_SOURCE_DIR}/bin>)
    

    如果你想把它放到配置目录中,使用这个:

    set_target_properties(foo PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output/$<CONFIG>/lib)
    set_target_properties(foo PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output/$<CONFIG>/lib)
    set_target_properties(foo PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output/$<CONFIG>/bin)