我是另一个傻瓜,试图通过“正确的方式”做事来试图做出体面的FindSDL2.cmake
。但是,当涉及到以下问题时,我正在撞墙:
# SDL2main imported target.
add_library(SDL2::SDL2main UNKNOWN IMPORTED)
set_target_properties(SDL2::SDL2main PROPERTIES
IMPORTED_LOCATION "${SDL2_MAIN_LIBRARY}")
问题是,在使用MinGW进行编译时,SDL2main需要-lmingw32
才能找到WinMain
。并且必须在链接器标志中SDL2main
之前。
似乎快乐的道路要我这样做:
if(MINGW)
set_target_properties(SDL2::SDL2main PROPERTIES
INTERFACE_LINK_LIBRARIES mingw32)
endif()
但这不起作用,因为mingw32
在 SDL2main
之后的来自链接器命令。它必须在之前。我也不希望自己插入目标来加重目标。
答案 0 :(得分:0)
好的,这让我有点想弄清楚 - 感谢ngladitz在#cmake IRC上做了一些澄清。
我最终采取了三步解决方法:
SDL2::_SDL2main_detail
。SDL2::SDL2
相关联。这很重要,否则CMake会混淆SDL2和SDL2main的链接顺序。SDL2::SD2main
的{{1}}目标,并链接到mingw32
。这是我的代码:
SDL2::_SDL2main_detail