我正在尝试使用cmake创建OS X框架。这是我的CMakeLists.txt
文件:
project( Foo)
cmake_minimum_required (VERSION 3.7)
add_library( Foo SHARED
foo.c
)
set_target_properties( Foo PROPERTIES
FRAMEWORK TRUE
RESOURCE "foo.md"
PUBLIC_HEADER "foo.h"
)
当我运行( mkdir build ; cd build ; cmake .. ; make)
时,会生成Foo.framework
,但标题和资源不会显示在其中。我错过了什么? (cmake版本3.7.1)
如何重现。保存在CMakeLists.txt之上。现在执行:
#!/bin/sh
echo "int version = 1;" > foo.c
touch foo.h
touch foo.md
( mkdir build ; cd build ; cmake .. ; make)
ls -R build/Foo.framework/
答案 0 :(得分:1)
您应该将PUBLIC_HEADER
添加到add_library
:
project( Foo )
cmake_minimum_required (VERSION 3.7)
add_library( Foo SHARED
foo.c
foo.h
)
set_target_properties( Foo PROPERTIES
FRAMEWORK TRUE
RESOURCE "foo.md"
PUBLIC_HEADER "foo.h"
)
除非您将头文件添加到目标,否则Cmake不知道从何处复制头文件。现在,重建会将foo.h
复制到Foo.framework/Headers/
。可能还有其他方法可以做到这一点,但这肯定会产生预期的结果。
即使您通过target_include_directories
功能添加标题,它也不会获取标题文件,这是有道理的,因为CMake不知道任何未明确添加到的文件目标。