Пользовательский каталог для вывода библиотеки CMake

В CMake я не могу вывести свою библиотеку в../out/library, только библиотеку. Когда я делаю путь../out/library, он говорит мне, что не может найти библиотеку, как будто он хочет с ней связаться.

add_library(../out/JE3D ../source/CDeviceLayerSDL.cpp)

Там больше файлов, я просто экономлю место. Когда я это делаю, я получаю эту ошибку.

Связывание статической библиотеки CXX lib../out/JE3D.a /usr/bin/ar: lib../out/JE3D.a: Такой файл или каталог не существует. [2]: * [lib../ out / JE3D. a] Ошибка 1 make [1]: * [CMakeFiles /../ out / JE3D.dir / all] Ошибка 2 make: *** [all] Ошибка 2

2 ответа

Решение

LIBRARY_OUTPUT_DIRECTORY Свойство target указывает каталог, в котором будут создаваться целевые файлы библиотеки.

set_target_properties(JE3D PROPERTIES
         LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library)

Если все библиотеки находятся в одном каталоге, я считаю более удобным установить CMAKE_LIBRARY_OUTPUT_DIRECTORY переменная, которая используется для инициализации LIBRARY_OUTPUT_DIRECTORY свойство при создании цели.

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/out/library)

Изменить: Проверьте комментарии, если ваша цель является статической библиотекой

Мои 2 цента, я пытался изменить выходной каталог статической библиотеки (.lib) в Visual Studio. Единственное, что я нашел, что работало для меня, было:

      set_target_propertes(${PROJECT_NAME} PROPERTIES
    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/myPath"
)

Это сделало выходной путь для библиотеки

      ${CMAKE_BINARY_DIR}/myPath/Debug

Я предполагаю, что создание конфигурации выпуска соответствующим образом изменит этот путь. Но мне пришлось использоватьset_target_properties, пытаясь сделать

      set(ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/myPath")

не работал. Это для CMake версии 3.19.5.

Другие вопросы по тегам