为什么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
中,这样您就不会在同一目录中混合为不同操作系统构建的二进制文件。