Почему папка include пуста после make install с помощью cmake? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь создать библиотеку и включить ее в свой проект, чтобы другие могли использовать мой проект.Итак, мой проект структурирован как

├── 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...