Как я могу предварительно скомпилировать библиотеки только заголовков с помощью cmake?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу предварительно скомпилировать библиотеки только заголовков с помощью cmake?

Сообщение Anonymous »

Мой проект — игровой движок, и на данный момент он выглядит примерно так:

Код: Выделить всё

/build
/engine
/include
/engine.h
/src
/enginepch.h
...
/vendor
/header_only
/include
/header1.h
...
/need_to_compile
...
CMakeLists.txt
/testbed
/stuffForTestingEngine
CMakeLists.txt
CMakeLists.txt
В моем includePath есть engine/vendor/** и engine/src/**, и я пишу весь код в VSCode с помощью C/C++ расширение ms-vscode.

Код: Выделить всё

./engine/CMakeLists.txt
таков:

Код: Выделить всё

project(engine)

# config "need_to_compile

# ...and I configured everything that needed compilation here: glm, glad, openal, libpng and glfw.

# linking

add_library(engine SHARED
src/core/application.cpp
src/core/engine.cpp
# etc. These are all my source files.
)
add_library(engine::engine ALIAS engine)

target_include_directories(engine PUBLIC
${engine_SOURCE_DIR}/include
)
target_include_directories(engine PRIVATE
${PROJECT_SOURCE_DIR}/vendor
)
target_precompile_headers(engine PRIVATE src/enginepch.h)

target_link_libraries(engine PUBLIC
glfw
png
openal
glad
glm::glm
)
Эта настройка и файл pch.h отлично работали со всеми стандартными элементами, такими как и .
Как только я попытался включить любую библиотеку header_only в свой файл pch, она сломалась. Например:

Код: Выделить всё

# This works!
#include 

# These didn't.
#include 
#include 
#include 
Я пробовал множество вариантов оператора #include, например "lib", "lib.h", "lib/lib.h", , и . Ничего не помогло.
Я пытался включить эти библиотеки header_only в CMakeLists, либо связав псевдоним, либо добавив include_directory, но это не сработало.
Я подозреваю, что мои настройки неверны или что у меня есть фатальное непонимание того, что делает CMake/компилятор.

Подробнее здесь: https://stackoverflow.com/questions/784 ... sing-cmake
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»