设置CMake OBJECT库的输出目录

时间:2017-09-20 19:12:54

标签: cmake

在我的CMake文件中,我指定了一个对象库:

add_library(core OBJECT ${sourcefiles})

我在以下的共享库中引用这组目标文件:

add_library(sharedlib SHARED $<TARGET_OBJECTS:core>)

这很好用,但是我想重用不同项目之间的构建工件。 通过在sharedlib上设置LIBRARY_OUTPUT_PROPERTY,我可以将生成的.so文件定向到公共目录:

set_target_properties(sharedlib PROPERTIES LIBRARY_OUTPUT_NAME /commondir)

但是,我似乎无法对核心(OBJECT)库做同样的事情 - .o文件总是最终出现在(项目特定的)生成的cmake-build目录中。 这意味着每个项目都必须重建(大)共享库...

我做错了什么,或者这不是(但是?)CMake可能吗?

1 个答案:

答案 0 :(得分:1)

您无法在CMake中更改对象/中间文件的输出目录。 That's by design(在一个项目中允许多个相同的输出名称):

  

“没有办法改变这个名字。   CMake创建了源树的精确副本   二叉树。“

但是在3.9版本中,CMake学会了导出对象库:

cmake_minimum_required(VERSION 3.9)

project(CorePorject)

file(WRITE "core.cpp" "")
file(WRITE "helper.cpp" "")
set(sourcefiles "core.cpp" "helper.cpp")

add_library(core OBJECT ${sourcefiles})    

export(
    TARGETS core
    FILE core.cmake 
    NAMESPACE Core_
)

<强>参考