开发者

Custom Directory for CMake Library Output

开发者 https://www.devze.com 2023-01-17 03:57 出处:网络
In CMake, I can\'t seem to output my library in ../out/library, only library. When I do the ../out/library path, it tells me it can\'t find the library, as if it wants to link to it.

In CMake, I can't seem to output my library in ../out/library, only library. When I do the ../out/library path, it tells me it can't find the library, as if it wants to link to it.

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

There's more files, I'm just saving space. When I do that, I get this error.开发者_StackOverflow中文版

Linking CXX static library lib../out/JE3D.a /usr/bin/ar: lib../out/JE3D.a: No such file or directory make[2]: * [lib../out/JE3D.a] Error 1 make[1]: * [CMakeFiles/../out/JE3D.dir/all] Error 2 make: *** [all] Error 2


The LIBRARY_OUTPUT_DIRECTORY target property specifies the directory where library target files will be built.

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

If all the libraries are in one directory, I find it more convenient to set the CMAKE_LIBRARY_OUTPUT_DIRECTORY variable, which is used to initialize the LIBRARY_OUTPUT_DIRECTORY property when creating a target.

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

Edit: Check comments if your target is a static library


My 2 cents, I was trying to change the output directory of a static library (.lib) in Visual Studio. Only thing I found that worked for me was:

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

This made the output path for the library

${CMAKE_BINARY_DIR}/myPath/Debug

I assume building a Release configuration would change that path accordingly. But I had to use set_target_properties, trying to do

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

didn't work. This is for CMake version 3.19.5.

0

精彩评论

暂无评论...
验证码 换一张
取 消