2017-08-16 29 views
0

これまで私はIDE Keilを試していましたが、IDEとして動作しましたが、ひどいです。 私はCLon 2016.3を使用して、Ubuntu 16.04上のSTM32L100RCxターゲット用の埋め込みC++プロジェクトを構築しようとしています。しかし、私は正しく設定する方法を突き止めることはできません。 Jetbrainのブログを読んでも私を助けません。コンパイル後、* .ldファイルから何らかの呼び出しを見つけることができないというエラーがあります。 cmakeのフラグ:Clion + STM32L1xx - セットアップ方法

SET(CMAKE_C_FLAGS "-mcpu=cortex-m3 -mthumb" "-msoft-float -mfix-cortex-m3-ldrd") 

とエラーを得た:

/tmp/ccPo0ceQ.s:713: Error: selected processor does not support `dsb 0xF' in ARM mode 
/tmp/ccPo0ceQ.s:734: Error: selected processor does not support `dsb 0xF' in ARM mode 
/tmp/ccPo0ceQ.s:1100: Error: selected processor does not support `dsb 0xF' in ARM mode 
/tmp/ccPo0ceQ.s:1111: Error: selected processor does not support `isb 0xF' in ARM mode 
/tmp/ccPo0ceQ.s:1157: Error: selected processor does not support `dmb 0xF' in ARM mode 
*** recipe for target 'CMakeFiles/Project.elf.dir/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c.obj' failed 

いずれかが私を助けることができるか、CMakeLists.txtと* .cmakeファイルを作業私を得ることができますか?

UPD:

私のcmakeのファイル:

include(CMakeForceCompiler) 
set(CMAKE_SYSTEM_NAME Generic) 

CMAKE_FORCE_C_COMPILER(/opt/arm/bin/arm-none-eabi-gcc GNU) 
CMAKE_FORCE_CXX_COMPILER(/opt/arm/bin/arm-none-eabi-g++ GNU) 

SET(CMAKE_C_FLAGS "-mcpu=cortex-m3 -mthumb" "-msoft-float -mfix-cortex-m3-ldrd") 

# fix long strings (CMake appends semicolons) 
string(REGEX REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") 

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "") 

set(BUILD_SHARED_LIBS OFF) 

set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -std=c++11") 
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -std=gnu99") 
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32L100RCTx_FLASH.ld) 
set(CMAKE_EXE_LINKER_FLAGS "-Wl,-gc-sections -T ${LINKER_SCRIPT}") 
+0

正しいクロスコンパイラを使用していますか? [ツールチェーンを正しくセットアップしましたか](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html)でしたか? –

+0

リンクをありがとう、私は後で読む。 – Sergey

+0

'CmakeForceCompiler.cmake'ファイルで' COMMON_FLAGS'を設定したとしますか?それ以外の場合は設定されていない空です。また、 'CMAKE_C_FLAGS'を複数回異なる値に設定します。 –

答えて

0

私が右の方法を見つけるようです。 私の間違ったアクションのシーケンス:

  • がやって「リセットキャッシュと再読み込みプロジェクト」
  • が、私は、私は「キャッシュと再読み込みプロジェクトをリセット」と思ったプロジェクト

に構築しようとするだけですCmakeキャッシュを消去しますが、実際には必要なファイルを削除しているかのように見えます。

シーケンスは正しかった:

  • がやって 'リセットキャッシュと再読み込みプロジェクト'
  • はやって '再読み込みcmakeのプロジェクト'
  • そして、それが成功したビルド一般的に

ました「Automaticaly Reload Cmake Project on Edit」オプションをチェックするだけで十分です。

関連する問題