shun
2024年8月27日 18時15分
お世話になっております。
現在、ABOS対応のArmadilloでATDE上のVS Codeでコーディングをしている者です。
Armadillo-840mで以前製作していた製品からの移植という形でArmadillo-610(ABOS対応)に移植したいと考えております。
Makefileを以前製作していたものを活用しようと思っているのですが、VS Code上の"C New Project"で生成されるテンプレートではなく別のディレクトリから動作させることは可能でしょうか?
移殖しようとしているMakefileを共有します。
#クロスコンパイル CROSS:=arm-linux-gnueabi ifneq ($(CROSS),) CROSS_PREFIX:=$(CROSS)- endif #コンパイル対象([make CROSS=]の入力でATDE上で使用可能なファイルへとコンパイル) CC=$(CROSS_PREFIX)gcc #警告オプション CFLAGS=-Wall #プログラム名 PROGRAM=InitSubToMain #ターゲット名(PROGRAMから変更があるときのみ) TARGET=$(PROGRAM) #インクルードパス USER_INCLUDE= -I /.../main/include #オブジェクトディレクトリ OBJ_DIR=/.../main/common/object #共通部ソースファイルディレクトリ SRC_DIR=/.../main/common/src #使用オブジェクト OBJS=$(PROGRAM).o $(OBJ_DIR)/std_string.o $(OBJ_DIR)/std_time.o $(OBJ_DIR)/std_unixcomm.o $(OBJ_DIR)/std_cgi.o $(OBJ_DIR)/product_org.o $(OBJ_DIR)/product_subtomain.o #SSL関連 #SSL_OPT1=-lssl #SSL_OPT2=-lcrypto #makeコマンドだけだと一番上のターゲットを実行 all: $(TARGET) #ターゲット $(TARGET): $(OBJS) $(CC) -o $(TARGET) $^ $(SSL_OPT1) $(SSL_OPT2) #ターゲットオブジェクト $(PROGRAM).o: $(PROGRAM).c $(CC) $(CFLAGS) $(USER_INCLUDE) -o $@ -c $< #サフィックスルール 共通項 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(CC) $(CFLAGS) $(USER_INCLUDE) -o $@ -c $< #make cleanで.oファイル削除 clean: $(RM) $(TARGET) $(OBJS)
以上、よろしくお願いいたします。
コメント
shun
at_satoshi.ohta
at_satoshi.ohta
2024年8月28日 11時03分
太田です。
申し訳ありません。
ABOSDE は作成されるプロジェクトのディレクトリ構造と依存関係があるので、
C New Project で作成したプロジェクトディレクトリとは別のディレクトリから動作させることは難しいです。
ABOSDE で C 言語のコードをビルドして SWU イメージを作成するためには C New Project で作成されるプロジェクト(ここではmy_projectディレクトリとします)の my_project/app/src 内にソースコードと Makefile を配置する必要があります。
理由としてはABOSDEの内部実装として、ATDE上でコンテナを作成した後、そのコンテナに my_project/app/src をマウントして、コンテナの中で my_project/app/src 直下の Makefile を用いてビルドを行うためです。
また、my_project/app/build ディレクトリ(実行ファイルを配置する)と my_project/app/lib ディレクトリ(共有ライブラリを配置する)に配置したバイナリファイルが Armadillo にインストールするための SWU イメージに含まれます。
そのため、ABOSDE から C 言語に対応した SWU イメージを作成する場合、以下の制限があります。
* ソースコードを my_project/app/src に置いてください。
* Makefile は my_project/app/src 直下に置いてください。
* 実行ファイルは my_project/app/build に置く必要があります。
* 共有ライブラリは my_project/app/lib に置く必要があります。
* そのため、Makefile を上記のディレクトリ構造に対応するように修正してください。
* ビルドに必要なパッケージを my_project/container/packages.txt に追記してください。
製品マニュアルにも C 言語のプロジェクト開発にあたり必要な注意点が記述されていますので、ご参照いただければと思います。
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
ご期待通りの回答ができずに申し訳ありません。
どうぞよろしくお願いいたします。