Я пытаюсь создать библиотеку и включить ее в свой проект, чтобы другие могли использовать мой проект.Итак, мой проект структурирован как
├── mlce
├── CMakeLists.txt
├── README.txt
├── include
├── lib
└── src
├── io
│ └── IO.h
└── mesh
├── Mesh.cpp
└── Mesh.h
В настоящее время include и lib пусты.Я создал их вручную, чтобы потом, когда я make install
, они были заполнены.
Мой CMakeLists.txt выглядит как
cmake_minimum_required(VERSION 3.0.2)
project(mlcelib)
set (SOURCE
${SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/src/mesh/Mesh.cpp
)
set (HEADER
${HEADER}
${CMAKE_CURRENT_SOURCE_DIR}/src/mesh/Mesh.h
${CMAKE_CURRENT_SOURCE_DIR}/src/io/IO.h
)
find_package (Eigen3 3.3 REQUIRED NO_MODULE)
add_library(${PROJECT_NAME} SHARED ${SOURCE})
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries (${PROJECT_NAME} Eigen3::Eigen)
message(${CMAKE_INSTALL_INCLUDEDIR})
install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) # <--- I was hoping
# this "PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}" would place all the header file of my project inside include folder.
# But apparently it is not doing that. The include folder is empty.
Тогда я делаю следующее:
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=/path/to/mlce/lib -DCMAKE_INSTALL_INCLUDEDIR=/path/to/mlce/include ..
make
make install
Так что, когда я делаю установку, только библиотека заполняется общейlib но установки нет.
├── include
├── lib
│ └── libmlcelib.dylib
Я ожидал, что include будет содержать mesh / Mesh.h и IO / IO.h