CMake/CTest 与 wine/qemu 整合

CMake/CTest integration with wine/qemu

我有:

我为包括

在内的不同平台开发原生 unity 插件

我使用 cmake 作为构建系统,使用 ctest 作为单元测试

我的构建环境 - osx,所以 运行 在 osx 上进行单元测试不是问题。

我也知道为了测试 Android 和 Windows 我可以相应地使用 qemuwine

问题:

我已经为 wine

编写了自己的解决方案

WineCTestWrapper.cmake:

macro (add_wine_test_wrapper_script TEST)
    set(TESTNAME ${TEST})
    configure_file (
        ${PROJECT_SOURCE_DIR}/thirdparty/cmake/modules/WineCTestWrapper.sh.in
        ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME} @ONLY
    )
endmacro ()

WineCTestWrapper.sh.in:

#!/bin/bash
# simple wrapper for windows PE-executable format

wine @TESTNAME@.exe

使用方法:

include(WineCTestWrapper)

...

find_program(WINE_FOUND wine)
add_test(some_test some_test)
if(WINE_FOUND)
    add_wine_test_wrapper_script(some_test)
endif()

请注意,默认情况下 MXE 创建带有 .exe 后缀的可执行文件,此解决方案使用此 'feature'

更新

另一个可能的解决方案https://cmake.org/pipermail/cmake/2008-August/023534.html

查看 CMAKE_CROSSCOMPILING_EMULATOR。最好在你的工具链文件中设置它。