这是我的shell命令:
cmake . \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_TOOLCHAIN_FILE=$toolchain \
-DANDROID_NDK=$ndk_path \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_ABI=$arc_abi \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_STL=c++_static
make
以及在CMakeLists中:
cmake_minimum_required( VERSION 3.5.1 )
project(husky)
set(prelibs "${CMAKE_SOURCE_DIR}/../../../../third_party/libs")
set(third_include "${CMAKE_SOURCE_DIR}/../../../../third_party/include")
set(src_root "${CMAKE_SOURCE_DIR}/../../../../src")
message(STATUS "cur dir:${CMAKE_CURRENT_SOURCE_DIR}")
string(REPLACE "-Oz" "-O3" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
string(REPLACE "-Os" "-O3" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -pthread -O3 -Wnon-virtual-dtor -Wno-unused-parameter")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wextra -flto -fuse-ld=gold -Wl")
set( CMAKE_BUILD_TYPE Release )
...
...
add_library(my_test
SHARED
${ALGO_SRC_LIST}
${API_SRC_LIST}
${STAGE_SRC_LIST}
${UTILS_SRC_LIST}
${UTILS_CPU_LIST}
${UTILS_FORMAT_LIST}
${PIPELINE_SRC_LIST}
)
target_link_libraries(my_test
libopencv_imgproc
libopencv_core
libcpufeatures
video
libtbb
libalgo
libprotobuf
${EXTRA_LIBS}
)
无论是否设置CMAKE_BUILD_TYPE
,构建库始终具有debuginfo。怎么了?
更新:我的目标是一个动态库。在CMakeLists.txt中添加“ set(CMAKE_BUILD_TYPE Release)”或在cmake命令中添加“ -DCMAKE_BUILD_TYPE = Release”时,结果始终是调试库。