将mdk工程转为cmake工程探索(一)
来源:互联网 发布:肖恩巴蒂尔数据 编辑:程序博客网 时间:2024/05/22 03:48
将mdk工程转为cmake工程探索 (一)
os:ubuntu 16.04
前提:已正确安装 arm-none -eabi-gcc
cmake 基本命令
add_executable($(project) $(source))
将source 编译成可执行文件 projectadd_library($(libname) shared $source)
将source编译成libname动态库,没有shared选项则编译成静态库add_subdirectory(dir)
到dir里寻找CMakeLists.txtinclude_directories(dir)
到dir里寻找头文件target_link_libraries(target1 target2)
target1依赖于target2组织内容
原子战舰版提供的跑马灯例程中的文件并不全部需要,通过分析依赖关系,(链接地址)。
新建文件夹,目录结构:
- 编写CMakeLists.txt
led/CMakeLists.txt
project(led)
include_directories(include)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER /usr/bin/arm-none-eabi-gcc)
add_subdirectory(share)
add_subdirectory(src)
led/shared/CMakeLists.txt
`add_library(core core_cm3.c)
add_library(delay delay.c)
add_library(led led.c)
add_library(misc misc.c)
add_library(stm32f10x_gpio stm32f10x_gpio.c)
add_library(stm32f10x_it stm32f10x_it.c)
add_library(stm32f10x_rcc stm32f10x_rcc.c)
add_library(stm32f10x_usart stm32f10x_usart.c)
add_library(sys sys.c)
add_library(system_stm32f10x system_stm32f10x.c)
add_library(usart usart.c)
target_link_libraries(sys stm32f10x)
target_link_libraries(delay sys)
target_link_libraries(usart sys)
target_link_libraries(led sys)
led/src/CMakeLists.txt
add_executable(led.hex main.c)
target_link_libraries(led.hex sys delay led usart core misc stm32f10x_gpio stm32f10x_rcc stm32f10x_usart stm32f10x_it system_stm32f10x)
- 最后
mkdir build&&cd build&&cmake ..&&make
………….报错
一号错误: include/stm32f10x.h:96:3: error: #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
打开stm32f10x.h,定位到96行,发现stm32f10x.h有芯片选型的功能,stm32f103zet的选项在70行,删掉注释,get!
二号错误
sys.c:33:7: error: expected '(' before 'void' __asm void MSR_MSP(u32 addr)
c内嵌汇编出错… 据说在mdk下也会报错,但可以忽略,不管,先把它改了。
错误代码块: __asm void MSR_MSP(u32 addr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
改成有分号的写法: void MSR_MSP(u32 addr)
{
__ASM volatile("MSR MSP, r0"); //set Main Stack value
__ASM volatile("BX r14");
}
get!
三号错误
/tmp/ccZtObe3.s: Assembler messages:
wfi’ in ARM mode
/tmp/ccZtObe3.s:25: Error: selected processor does not support
/tmp/ccZtObe3.s:43: Error: selected processor does not support cpsid i' in ARM mode
cpsie i’ in ARM mode
/tmp/ccZtObe3.s:61: Error: selected processor does not support
/tmp/ccZtObe3.s:81: Error: selected processor does not support requested special purpose register – msr MSP,r0'
google之,还是芯片型号问题,果然还是配置难。
一晚上成果,明天再说
- 将mdk工程转为cmake工程探索(一)
- 将mdk工程转为cmake工程探索(二)
- 将mdk工程转为cmake工程探索(三)
- 将java工程转为web工程
- 如何将JAVA工程转为MAVEN工程
- keil MDK 新建工程
- 【记录】MDK新建工程
- VS2008工程转为VC6工程
- IDEA工程转为Myeclipse工程
- vs2005工程转为vs2010工程
- java工程转为maven工程
- vs2010工程转为vs2005工程
- java工程转为web工程
- mvn工程转为eclipse工程
- myeclipse工程转为idea工程
- 使用Gradle将CAS源码转为为eclipse工程详解
- 利用cmake管理工程
- CMake创建CTest工程
- POJ2785:4 Values whose Sum is 0(二分+暴力)
- HDU1002 A + B Problem II
- Gradle实战系列(二)__自动替换的配置文件
- HDU1089 A+B for Input-Output Practice (I)
- 用maven搭建SpringMVC框架(一)
- 将mdk工程转为cmake工程探索(一)
- HDU1090 A+B for Input-Output Practice (II)
- 使用SVProgressHUD时加入自定义Gif图片
- HDU1091 A+B for Input-Output Practice (III)
- LEXSTR
- HDU1092 A+B for Input-Output Practice (IV)
- Codeforces 229C 想法
- 在VC里装了easyx并不是万事大吉了~
- 内存初探——什么是内存