In my project I am using cpp and .h files they all are in different folders
|-src
|-main
|-java
|-cpp
|-native-lib.cpp
|-library-1
|-include
|-lib11.h
|-lib12.h
|-...
|-library-2
|-include
|-lib21.h
|-lib22.h
|-...
in current version i am adding each files into 'CMakeLists.txt'
...
add_library(# Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
src/main/cpp/library-1/include/lib10.h
src/main/cpp/library-1/include/lib11.h
src/main/cpp/library-1/include/lib12.h
src/main/cpp/library-1/include/lib13.h
...
src/main/cpp/library-2/include/lib21.h
src/main/cpp/library-2/include/lib22.h
src/main/cpp/library-2/include/lib23.h
...
)
...
I tried adding like below
...
add_library(# Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
src/main/cpp/library-1/include/*.h #expected result: it will include all '.h' files in directory, but gradle sync failed
src/main/cpp/library-2/include/*.h#expected result: it will include all '.h' files in directory, but gradle sync failed
)
...
Any other way to include all files in a folder using add_library
after suggestion from Lucky
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
include_directories(src/main/cpp/library-1/include)
include_directories(src/main/cpp/library-2/include)
file(GLOB SOURCES "src/*.h")
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
${SOURCES}
)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
To add a library in CMake, use the add_library() command and specify which source files should make up the library. Rather than placing all of the source files in one directory, we can organize our project with one or more subdirectories. In this case, we will create a subdirectory specifically for our library.
CMakeLists. txt file contains a set of directives and instructions describing the project's source files and targets (executable, library, or both). When you create a new project, CLion generates CMakeLists. txt file automatically and places it in the project root directory.
To include headers in CMake targets, use the command target_include_directories(...) . Depending on the purpose of the included directories, you will need to define the scope specifier – either PUBLIC , PRIVATE or INTERFACE .
cmake is searched first in CMAKE_MODULE_PATH , then in the CMake module directory. There is one exception to this: if the file which calls include() is located itself in the CMake builtin module directory, then first the CMake builtin module directory is searched and CMAKE_MODULE_PATH afterwards.
You can generate a list of your source files:
file(GLOB SOURCES "src/*.h")
Now the SOURCES variable can be used as a parameter in add_library.
add_library(native-lib SHARED ${SOURCES})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With