Cmake 无法在Clion中构建FreeRTOS WIN32演示

Cmake 无法在Clion中构建FreeRTOS WIN32演示,cmake,clion,freertos,Cmake,Clion,Freertos,下面是我正在使用的CmakeLists文件。我正在使用eclipse中的链接器标志,因为它似乎正确地构建在eclipse中 project(new1 LANGUAGES CXX C) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_CXX_STANDARD 14) # Compiler options for compiling MinGW targets. set(CMAKE_C_FLAGS_DEBUG "-D_WIN32_WINNT=0x0601 -Dp

下面是我正在使用的CmakeLists文件。我正在使用eclipse中的链接器标志,因为它似乎正确地构建在eclipse中

project(new1 LANGUAGES CXX C)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 14)

# Compiler options for compiling MinGW targets.
set(CMAKE_C_FLAGS_DEBUG "-D_WIN32_WINNT=0x0601 -DprojCOVERAGE_TEST=0 -fmessage-length=0 -Wcast-qual")
#-------------------------------------------------------------

# Linker options for Linking MinGW targets.
set(CMAKE_EXE_LINKER_FLAGS "-Xlinker -lwinmm")
#-------------------------------------------------------------

include_directories(FreeRTOS/Source/include
                    FreeRTOS/Source/portable/MSVC-MingW
                    /)

add_subdirectory(FreeRTOS/Source)

add_executable(application main.cpp)
target_link_libraries(application kernel)
target_link_libraries(application winmm.lib)
下面是构建输出

"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E cmake_link_script CMakeFiles\application.dir\link.txt --verbose=1
"C:\Program Files\JetBrains\CLion 2020.1.1\bin\cmake\win\bin\cmake.exe" -E remove -f CMakeFiles\application.dir/objects.a
"F:\TrueSTUDIO for STM32 9.0.0\PCTools\bin\ar.exe" cr CMakeFiles\application.dir/objects.a @CMakeFiles\application.dir\objects1.rsp
"F:\TrueSTUDIO for STM32 9.0.0\PCTools\bin\g++.exe" -g  -Xlinker -lwinmm -Wl,--whole-archive CMakeFiles\application.dir/objects.a -Wl,--no-whole-archive  -o application.exe -Wl,--out-implib,libapplication.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\application.dir\linklibs.rsp
FreeRTOS/Source/portable/MSVC-MingW/libport.a(port.c.obj):port.c:(.text+0x15): undefined reference to `timeGetDevCaps@8'
FreeRTOS/Source/portable/MSVC-MingW/libport.a(port.c.obj):port.c:(.text+0x2d): undefined reference to `timeBeginPeriod@4'
FreeRTOS/Source/portable/MSVC-MingW/libport.a(port.c.obj):port.c:(.text+0xd5): undefined reference to `timeGetDevCaps@8'
FreeRTOS/Source/portable/MSVC-MingW/libport.a(port.c.obj):port.c:(.text+0xe7): undefined reference to `timeEndPeriod@4'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [application.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/application.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/application.dir/rule] Error 2
mingw32-make.exe: *** [application] Error 2

有人能帮忙吗。

所以,链接winmm库没有问题,只是我把它链接到了一个错误的目标。这是freeRTOS/Source/Portable中windows端口的依赖项。

抱歉,@Tsyvarev我忘记了重要部分。变量
CMAKE\u EXE\u LINKER\u FLAGS
不是用于链接库的
-l
标志的合适位置。而是使用
目标链接库
链接库
命令。例如,
链接库(winmm)
。谢谢,@Tsyvarev。我在底部也使用了它,但我链接到了错误的目标。winmm由依赖项使用。谢谢你的帮助。