![](/img/trans.png)
[英]Build grpc C++ for android using ndk arm-linux-androideabi-clang++ compiler
[英]How to generate clang compiler flag using CMake generator-expression for android build
我正在嘗試使用CMake的clang PrecompiledHeader在這里找到: https : //gist.github.com/leeor/316168500765cf51ae97
這是來自此處的拉取請求: https : //github.com/larsch/cmake-precompiled-header
這樣做時,我在export_all_flags函數的第22行遇到錯誤:
CMake Error at cmake/Modules/android/PrecompiledHeader.cmake:22 (file):
Error evaluating generator expression:
$<BOOL:-isystem /Users/XXXXX/Library/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=24 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -frtti -fexceptions -std=c++14 -pthread -DUSE_FILE32API=1 -DCC_ENABLE_CHIPMUNK_INTEGRATION=0 -DCC_ENABLE_SCRIPT_BINDING=0 -DCC_USE_PHYSICS=0 -DCC_LUA_ENGINE_DEBUG=0 -DCC_USE_3D_PHYSICS=0 -DCC_ENABLE_BULLET_INTEGRATION=0 -DCC_USE_NAVMESH=0 -DCC_USE_TIFF=0 -DCC_USE_WEBP=0 -DRAPIDJSON_HAS_STDSTRING=1 -std=c++11 -Wno-deprecated-declarations -Wno-reorder -Wno-invalid-offsetof -fPIC -stdlib=libc++ -fsigned-char -latomic>
$<BOOL> expression requires exactly one parameter.
如何正確使用CMake generator-expression生成正確的編譯器選項列表,然后將其傳遞給clang編譯器?
注意:
如果我更換
set(_cmake_cxx_flags "$<$<BOOL:${CMAKE_CXX_FLAGS}>:$<JOIN:${CMAKE_CXX_FLAGS},\n>\n>")
與
set(_cmake_cxx_flags "$<$<JOIN:${CMAKE_CXX_FLAGS},\n>\n>")
我收到另一個錯誤:
Error evaluating generator expression:
$<$<JOIN:-isystem /Users/XXXXX/Library/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=24 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -frtti -fexceptions -std=c++14 -pthread -DUSE_FILE32API=1 -DCC_ENABLE_CHIPMUNK_INTEGRATION=0 -DCC_ENABLE_SCRIPT_BINDING=0 -DCC_USE_PHYSICS=0 -DCC_LUA_ENGINE_DEBUG=0 -DCC_USE_3D_PHYSICS=0 -DCC_ENABLE_BULLET_INTEGRATION=0 -DCC_USE_NAVMESH=0 -DCC_USE_TIFF=0 -DCC_USE_WEBP=0 -DRAPIDJSON_HAS_STDSTRING=1 -std=c++11 -Wno-deprecated-declarations -Wno-reorder -Wno-invalid-offsetof -fPIC -stdlib=libc++ -fsigned-char -latomic,
>
>
Expression did not evaluate to a known generator expression
感謝tsyvarev評論,我能夠通過使用解決錯誤
string(REPLACE " " "\\n" _cmake_cxx_flags ${CMAKE_CXX_FLAGS})
我仍然遇到問題,因為clang ++抱怨在嘗試輸出多個文件時使用了-o選項,但是至少編譯器選項有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.