为什么CMAKE_LIBRARY_OUTPUT_DIRECTORY不起作用?

ric*_*d.g 5 cmake

我想在bin子目录上构建静态库,但是cmake似乎没有做我想做的事情.这是我写的Cmake文件.

cmake_minimum_required(VERSION 3.3)
project(FancyLogger)

set(SOURCE_FILES FancyLogger.cpp)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)

add_library(FancyLogger STATIC ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

我创建了一个子目录,并在此子目录中build运行,希望在bin库上生成输出静态库.cmake ..make

但输出仍然在build目录中,为什么?

这是我的文件树

===== |

| FancyLogger.cpp

| 的CMakeLists.txt

| /建立

| /箱

Ant*_*nio 13

对于静态库,您必须设置CMAKE_ARCHIVE_OUTPUT_DIRECTORY,而不是CMAKE_LIBRARY_OUTPUT_DIRECTORY.

所以你将拥有:

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
Run Code Online (Sandbox Code Playgroud)

看看我如何将cmake输出变成'bin'目录?

顺便说一句,在源目录中创建子文件夹可能不是一个好主意,尤其是以自动方式.

  • 我同意.您应该使用$ {CMAKE_CURRENT_BINARY_DIR}/bin或$ {CMAKE_BINARY_DIR}/bin (2认同)