上述代码中设置MYLIB_PUBLIC_HEADERS后似乎没有使用
时间: 2023-08-06 18:03:21 浏览: 80
非常抱歉,我的回答有误。在上述代码中确实没有使用MYLIB_PUBLIC_HEADERS变量。
正确的做法是在install命令中使用PUBLIC_HEADER参数指定要安装的头文件列表,例如:
```
install(TARGETS mylib mylib_shared
EXPORT MyLibConfig
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/mylib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include/mylib
)
```
这里的PUBLIC_HEADER参数指定了要安装的头文件列表,将它们安装到include/mylib目录中。INCLUDES参数可以让CMake自动将头文件路径添加到用户程序中,以便正确地包含库的头文件。
MYLIB_PUBLIC_HEADERS变量可以用来定义要安装的头文件列表,例如:
```
set(MYLIB_PUBLIC_HEADERS
mylib/header1.h
mylib/header2.h
mylib/header3.h
)
```
然后可以将这个变量的值传递给PUBLIC_HEADER参数,例如:
```
install(TARGETS mylib mylib_shared
EXPORT MyLibConfig
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER ${MYLIB_PUBLIC_HEADERS}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include/mylib
)
```
这样就可以使用MYLIB_PUBLIC_HEADERS变量来设置要安装的头文件列表了。
阅读全文