Почему CMake C / C ++ по-разному относится к двум двоичным библиотекам?(деталь внутри) - PullRequest
0 голосов
/ 25 сентября 2018

Вот мой сценарий 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 для другого?Просто очень любопытно ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...