CommonAPI Generator로 생성되는 file에서 Stub, Proxy, Common으로 어떤 파일들이 생성되는지 확인할 수 있었는데, 각자의 디렉토리에 해당 화일 생성하는 방법을 알아보자.
파일을 나눠서 생성하는것은 SOME/IP나 DBUS와 같이 바인딩 라이브러리를 만들때 활용한다.
동적으로 바인딩 라이브러리를 구성하면 실행파일을 실행시킬때 CommonAPI 관련 환경파일(commonapi.ini, commonapi-somip.ini)도 같이 구성하여야 한다. - 추후 정리
commonapi Someip Generator의 옵션을 조정해서 각각의 위치로 파일을 생성한다.
-dc directory : Common file들을 directory에 생성
-dp directory : Proxy file들을 directory에 생성
-ds directory : Stub file들을 directory에 생성
예제에서
hello$ ../commonapi_someip_generator/commonapi-someip-generator-linux-x86 -ll verbose /fidl/HelloWorld.fdepl
와 같이 수행했던 명령을 아래와 같이 변경한다.
hello$ ../commonapi_someip_generator/commonapi-someip-generator-linux-x86 -ll verbose /fidl/HelloWorld.fdepl -dc src-gen_someip/common -dp src-gen_someip/proxy -ds src-gen_someip/stub
이제 Common, Stub, Proxy 용 SOME/IP 동적 바인딩 라이브러리(.so)를 만들어보자.
CMakeLists.txt를 아래와 같이 변경한다.
- CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
OPTION(USE_INSTALLED_COMMONAPI "Set to OFF to use the local (build tree) version of CommonAPI" OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++0x -Wl,--no-as-needed")
include_directories(
src-gen
src-gen_someip/common
src-gen_someip/proxy
src-gen_someip/stub
~/capicxx-core-runtime/include #capixx-core-runtime이 설치되어 있는 폴더
~/capicxx-someip-runtime/include #capixx-someip-runtime이 설치되어 있는 폴더
~/vSomeIP/interface #vSomeIP가 설치되어 있는 폴더
)
link_directories(
~/COMMONAPI #CommonAPI 라이브러리가 설치되어 있는 폴더
)
add_library(HelloWorldsomeipCommon SHARED
src-gen_someip/common/v1/commonapi/HelloWorldSomeIPDeployment.cpp )
target_link_libraries(HelloWorldsomeipCommon ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )
add_library(HelloWorldsomeipProxy SHARED
src-gen_someip/proxy/v1/commonapi/HelloWorldSomeIPProxy.cpp )
target_link_libraries(HelloWorldsomeipProxy ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )
add_library(HelloWorldsomeipStub SHARED
src-gen_someip/stub/v1/commonapi/HelloWorldSomeIPStubAdapter.cpp )
target_link_libraries(HelloWorldsomeipStub ~/COMMONAPI/libCommonAPI-SomeIP.so vsomeip )
build 디렉토리로 이동하여
$ cmake ..
$ make
0 comments:
댓글 쓰기