Пользовательский каталог для вывода библиотеки 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.