У меня возникли проблемы с настройкой raygui.h с помощью cmake с использованием двух целей: библиотеки и исполняемого файла. Здесь есть репозиторий с точными файлами, которые вызывают ошибки многократного определения SomeFunction во время сборки. Ошибки такие, как показано ниже:
/usr/bin/ld: libgame-lib.a(hello_world.cpp.o): in function `GuiEnable':
hello_world.cpp:(.text+0x0): multiple definition of `GuiEnable'; CMakeFiles/exe.dir/src/main.cpp.o:main.cpp:(.text+0x0): first defined here
Это похоже на то, что все объявления raygui.h были сделаны дважды.
Проблема не возникает в основной ветке, где только одна цель напрямую связана с raygui.h.
Это файлы в ветке, в которой возникла проблема:
hello_world.hpp
#include "raylib.h"
#define RAYGUI_IMPLEMENTATION
#include "raygui.h"
void hello_world();
hello_world.cpp
#include "hello_world.hpp"
void hello_world() {
InitWindow(300, 300, "Hello World with raylib.");
while (!WindowShouldClose()) {
BeginDrawing();
ClearBackground(BLACK);
DrawText("Hello World", 120, 150, 12, RED);
GuiButton((Rectangle) {115, 180, 80, 16}, "Hello World");
EndDrawing();
}
}
main.cpp
#include "hello_world.hpp"
int main() {
hello_world();
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -guienable