【发布时间】:2017-10-18 16:30:30
【问题描述】:
这是我的代码结构:
- 主要可执行文件(CMakeLists.txt)
|
- 基础库(CMakeLists.txt)
- 分析器库(CMakeLists.txt)
- 日志库(CMakeLists.txt)
每个库都在使用基础库。 主要是使用每个库。
其实这是主可执行文件的CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
# build native_app_glue as a static lib
add_library(native_app_glue STATIC
${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -fno-exceptions -fno-rtti")
# build the ndk-helper library
set(ndk_helper_dir ../../../../common/ndk_helper)
add_subdirectory(${ndk_helper_dir} ndk_helper)
# build the base library
set(base_dir ../../../../common/base)
add_subdirectory(${base_dir} base)
# build the profile library
set(profile_dir ../../../../common/profile)
add_subdirectory(${profile_dir} profile)
# build the log library
set(log_dir ../../../../common/log)
add_subdirectory(${log_dir} log)
# Export ANativeActivity_onCreate(),

# Refer to: https://github.com/android-ndk/ndk/issues/381.
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
# now build app's shared lib
add_library(MainActivity SHARED
MainActivity.cpp
MainRenderer.cpp)
target_include_directories(MainActivity PRIVATE
${ANDROID_NDK}/sources/android/cpufeatures
${ANDROID_NDK}/sources/android/native_app_glue
${ndk_helper_dir}
${base_dir}
${profile_dir}
${log_dir}
)
# add lib dependencies
target_link_libraries(MainActivity
android
native_app_glue
atomic
EGL
GLESv2
log
ndk-helper
base
profile
log
)
我无法在编译时将包含路径从任何库添加到基础库。我正在尝试这样做:
关于profile库对应的CMakeLists.txt
include_directories( ".."
"../.."
"../base/include"
"../../base/include"
"../../../base/include"
"./include"
"include"
)
target_include_directories(profile PRIVATE
${base_dir}
".."
"../.."
"../base/include"
"../../base/include"
"../../../base/include"
"./include"
)
在编译时我遇到一个错误,例如找不到位于基础库中的“something.h”。如果我改为“../../base/include/something.h”,一切正常......
我想为包含文件夹添加这些默认自动路径。有没有办法做到这一点?我该怎么做?
我已经为此苦苦挣扎了很长时间。任何帮助表示赞赏。
【问题讨论】:
标签: c++ compilation cmake libraries