Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么CMAKE_LIBRARY_OUTPUT_目录不';不行?_Cmake - Fatal编程技术网

为什么CMAKE_LIBRARY_OUTPUT_目录不';不行?

为什么CMAKE_LIBRARY_OUTPUT_目录不';不行?,cmake,Cmake,我想在binsubdir上构建静态库,但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 ${SOUR

我想在
bin
subdir上构建静态库,但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})
我做了一个
build
subdir,并在这个子目录中运行
cmake..
make
,希望在bin库上生成输出静态库

但是输出仍然保留在
build
目录中,为什么

这是我的文件树

===== |

|FancyLogger.cpp

|CMakeLists.txt

|/构建


|/bin

对于静态库,必须设置,而不是

因此,您将有:

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)


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

我同意。您应该使用${CMAKE\u CURRENT\u BINARY\u DIR}/bin或${CMAKE\u BINARY\u DIR}/bininstead@DimitriMerejkowsky为什么这不是一个好主意。你说下面的话不好?设置(CMAKE_存档_输出_目录${CMAKE_当前_源_目录}/lib)。是。例如,如果您想为linux编译并为android交叉编译,您可以拥有一个
build/linux
和一个
build/android
文件夹,因此您的库应该位于
bulid/linux/lib
build/android/lib
中,这样您就不会在同一目录中混合为不同操作系统构建的二进制文件。