Вот мой сценарий CMake:
cmake_minimum_required(VERSION 2.8)
project(cimutils)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_VERBOSE_MAKEFILE TRUE)
# not recommended to search for all *.c (This sets all source in variable SOURCES)
#file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c")
# explicitly define each .c file is preferred. (This sets all source in variable SOURCES)
set(SOURCES
"src/process_picture/saveraw.c"
"src/process_picture/savebmp.c"
"src/process_picture/savejpeg.c"
"src/lcd/framebuffer.c"
"src/main.c"
"src/cim/video.c"
"src/cim/process.c"
"src/cim/convert.c"
"src/cim/cim_fmt.c"
)
# set include path in variable INC
set (INC
"src/include"
"src/jpeg_hw_encoder"
)
# Set include path
include_directories (AFTER ${INC})
# Set all source files
add_executable(${PROJECT_NAME} ${SOURCES})
# Sets default (system) library path
set (CMAKE_SYSROOT "/usr/local/mips-linux-gnu-gcc-toolchains/mips-gcc-glibc/mips-linux-gnu/libc")
find_library (jpeg
NAMES jpeg
PATHS "${CMAKE_SOURCE_DIR}/lib"
)
find_library (jpeg-hw
NAMES jpeg-hw
PATHS "${CMAKE_SOURCE_DIR}/lib"
)
target_link_libraries(${PROJECT_NAME} c gcc_s ${jpeg} ${jpeg-hw})
Сборка в порядке.Тем не менее, он обрабатывал jpeg-hw
и jpeg
по-разному, так как я видел команду ссылки (детали усечены, чтобы показать только соответствующие части):
gcc ..... ${PROJECT_HOME}/lib/libjpeg.so -ljpeg-hw
По-видимому, эти две двоичные библиотеки были размещеныв том же каталоге, и они используют один и тот же синтаксис в файле сценария.Но почему CMake выбирает полный путь для одного и выбирает -l
для другого?Просто очень любопытно ....