맞춤형 Android 컴파일러를 사용하고 있습니다. 이것은 cpp 코드를 컴파일하고 .so 파일을 생성합니다. 명령 프롬프트에서 잘 작동하지만 Cmake를 사용하여 빌드를 시도하면 Cmake는 toolchain 파일에서 컴파일러 이름을 설정 한 후에도 Android 컴파일 용 Clang 또는 GNU 컴파일러를 항상 선택합니다.cmake에서 사용자 정의 android 컴파일러에 대한 지원을 추가하는 방법?
내 분석 및 결과는 다음과 같습니다.
내가
내가 CMAKE_SYSTEM_NAME가 안드로이드에 지정된 CMAKE에서 흐름이 IOS 또는 LINUX
로 CMAKE_SYSTEM_NAME 지정에 비해 다른 것을 이해 안드로이드 컴파일러 툴체인 파일을 만들기 위해 노력하고있다하십시오 toolchain 파일이나 명령 행 옵션이 CMAKE_SYSTEM_NAME을 "Android"로 설정하면 현재 이해를 확인하십시오.
CMakeDetermineSystem.cmake는이 파일을로드합니다 : Android-Determine.cmake 다음은 플랫폼 별 초기화 단계입니다. CMakeSyst emSpecificInitialize.cmake Android-Initialize.cmake를로드하여 sysroot를 선택합니다. 단계는 또한 처음 새로운 빌드 트리에서 사용할 수있는 각 언어에 대한 실행 "결정"언어 파일이 여기
Android-Determine-C.cmake
Android-Determine-CXX.cmake
: 우리는 구문 분석 곳
Determine-Compiler.cmake
Determine-Compiler-NDK.cmake
후자 파일입니다 NDK에서 정보의 무리. 결과는 향후 실행을 위해 CMakeFiles/$ v/CMake $ {lang} Compiler.cmake에서 지속됩니다.
다음은 언어 별 초기화 단계입니다. - 예를 들어, 경우에 랭 {} 인 C : CMakeCInformation.cmake
이들 중 하나를로드 이러한 하나로드
Android-GNU-C.cmake
Android-Clang-C.cmake
:
Android-GNU.cmake
Android-Clang.cmake
결정-컴파일러를 NDK. cmake는 cmake가 clang 또는 gcc 또는 llvm toolchains의 버전을 찾고 적절한 컴파일러를 설정하는 곳입니다.
요구 사항 및 문제점 문 toolchain 파일에서 c 및 cxx 컴파일러를 수동으로 설정하려고 시도했을 때 cmake가 사용자 정의 컴파일러를 가리키는 것을 허용하지 않습니다. 이상적으로, 필자는 toolchain 파일을 사용하여 라이브러리에/link 및 컴파일러가 포함되도록 cmake에게 알려주고 싶습니다. 그러나 시스템이 안드로이드로 결정되면, cmake는 위의 이벤트 시퀀스를 따라 가며 clang, gcc 또는 llvm 컴파일러에 대해 툴체인을 지정해야합니다.
사용자 정의 컴파일러를 사용하기 위해 cmake를 수용하기 위해 다음 파일에서 변경해야 할 것이라고 생각합니다. Determine-Compiler-NDK.cmake - 우리는 android 라이브러리와 컴파일러를 포함하는 "NewCompiler Toolchain"에 대한 지원을 추가해야합니다.
새로운 Android- {NewCompiler} -C.cmake, Android- {NewCompiler} -CXX.cmake, Android- {NewCompiler} .cmake 및 다른 적절한 툴체인 파일을 사용하여 대상 아키텍처 및 컴파일러 플래그를 설정합니다.
프로세스에 대한 의견이나이 문제를 해결하는 방법에 대한 의견을 보내 주시면 감사하겠습니다.
일부 연구를 마친 후에도 똑같은 것을 발견했습니다. –
컴파일러에 대해 cmake에게 가르치려고 시도하십시오. – Deepak