cmake - 无法在 Clion 中构建 FreeRTOS WIN32 演示
问题描述
下面是我正在使用的 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 端口的依赖项。
推荐阅读
- java - 使用 elasticsearch 搜索最相似的字符串
- rust - 在返回位置具有泛型关联类型的 Impl trait 会导致生命周期错误
- c# - Postman 表单数据到 ASP.NET Core 2.2 控制器未绑定到具有私有设置器的命令
- asp-classic - 是否有适用于 Jetbrains Rider 的 ASP Classic 的运行/调试配置模板?
- python - 如何逐行读取和写入代码输出到文本文件中
- c++ - 如何在多个函数中操作 ifstream 对象
- unix - grep 和 awk,组合命令?
- ruby-on-rails - Sidekiq 工人重复工作的最佳实践
- git - git remote set-url 和 remote remove 之间的区别然后添加?
- java - 按字母顺序打印列表中每个单词的计数