I'm facing an issue that consumes a lot of time trying to find out what is the issue and i hope someone could help
# === definitions ===
include(FetchContent)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(BUILD_TESTING OFF)
set(protobuf_MSVC_STATIC_RUNTIME OFF)
set(protobuf_USE_EXTERNAL_GTEST ON)
SET(protobuf_BUILD_SHARED_LIBS OFF CACHE BOOL "Build Shared Libraries" FORCE)
SET(protobuf_MSVC_STATIC_RUNTIME OFF CACHE BOOL "Link static runtime libraries" FORCE)
message(CHECK_START "Fetching Protobuf")
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
protobuf
GIT_TAG "v21.12"
FIND_PACKAGE_ARGS NAMES protobuf
)
set(protobuf_BUILD_TESTS OFF CACHE INTERNAL "")
FetchContent_MakeAvailable(protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
include(Findprotobuf)
include_directories(${Protobuf_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# === targets ===
protobuf_generate_cpp(PROTO_SRC PROTO_HEADER media.proto)
message("PROTO_SRC ${PROTO_SRC}")
message("PROTO_HEADER ${PROTO_HEADER}")
add_library(PROTO STATIC ${PROTO_HEADER} ${PROTO_SRC} CProtoWrapper.cpp)
target_link_libraries(PROTO
PUBLIC
protobuf::libprotobuf
${protobuf_LIBRARIES}
)
target_include_directories(PROTO PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
#=== install ===
install(TARGETS PROTO EXPORT PROTO_Targets
RUNTIME COMPONENT PROTO_Runtime
LIBRARY COMPONENT PROTO_Runtime
NAMELINK_COMPONENT PROTO_Development
ARCHIVE COMPONENT PROTO_Development
INCLUDES DESTINATION "${CMAKE_INSTALL_LIBDIR}")
install(EXPORT PROTO_Targets
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PROTO
COMPONENT PROTO_Development)
Now using the same file but crossing-compiling for android and invoking CMake using the following python script
cmake_args += [
f"-D CMAKE_TOOLCHAIN_FILE={ndk_dir}\\build\\cmake\\android.toolchain.cmake",
f"-D CMAKE_MAKE_PROGRAM={sdk_dir}\\cmake\\3.18.1\\bin\\ninja.exe",
f"-D ANDROID_PLATFORM=android-21",
f"-D CMAKE_EXPORT_COMPILE_COMMANDS=ON",
f"-D CMAKE_VERBOSE_MAKEFILE=ON",
f"-D ANDROID_ABI=x86_64",
f"-D SWYPE_APK_BUILD_ABI=i86_android_64bit"
f"-D CMAKE_IMPORT_LIBRARY_SUFFIX=.a"
]
subprocess.run(
["cmake", "-G Ninja Multi-Config","-S", ".."] + cmake_args, check=True
)
now ninja compiler uses this line which causes an issue in building
protobuf::protoc --cpp_out, where protobuf::protoc has no expansion in that case
Any idea would be appreciated
Thanks