Я пытаюсь понять, как работают файлы prl. Работая на компьютере Windows, я создал две библиотеки stati c, lib1.lib (экспорт void my_lib1_func()
) и lib2.lib (экспорт void my_lib2_func()
, который использует my_lib1_func
). Затем я создаю консольное приложение, которое статистически связываю с lib2.lib. К сожалению, при попытке его скомпилировать компилятор жалуется, что не может найти my_lib1_func
.
. У меня сложилось впечатление, что файлы prma qmake решат эту проблему, как объяснено здесь , но к сожалению, мне не удалось его использовать. Ниже приведен исходный код, есть несколько файлов, но они тривиальны. Структура структуры каталогов выглядит следующим образом:
root
|---my_lib1
|---my_lib1.pro
|---my_lib1.cpp
|---my_lib1_header.h
|---my_lib2
|---my_lib2.pro
|---my_lib2.cpp
|---my_lib2_header.h
|---main
|---main.pro
|---main.cpp
//my_lib1_header.h
#pragma once
void my_lib1_func();
// my_lib1.cpp
#include <iostream>
#include "my_lib1_header.h"
void my_lib1_func() {
std::cout << "Hello" << std::endl;
}
#my_lib1.pro
TEMPLATE = lib
HEADERS += my_lib1_header.h
SOURCES += my_lib1.cpp
TARGET = my_lib1
CONFIG += static create_prl
CONFIG -= qt
//my_lib2_header.h
#pragma once
void my_lib2_func();
//my_lib2.cpp
#include "../my_lib1/my_lib1_header.h"
#include "my_lib2_header.h"
#include <iostream>
void my_lib2_func() {
my_lib1_func();
std::cout << "World" << std::endl;
}
#my_lib2.pro
TEMPLATE = lib
SOURCES += my_lib2.cpp
CONFIG += static link_prl create_prl
CONFIG -= qt
CONFIG(debug, debug|release) {
LIBS += ../my_lib1/debug/my_lib1.lib
}
CONFIG(release, debug|release) {
LIBS += ../my_lib1/release/my_lib1.lib
}
// main.cpp
#include "../my_lib2/my_lib2_header.h"
int main() {
my_lib2_func();
}
#main.pro
TEMPLATE = app
CONFIG -= qt
CONFIG += console link_prl
CONFIG(debug, debug|release) {
LIBS += ../my_lib2/debug/my_lib2.lib
}
CONFIG(release, debug|release) {
LIBS += ../my_lib2/release/my_lib2.lib
}
SOURCES += main.cpp
Полученный Makefile для main. cpp связывается с my_lib2.lib
, но не с my_lib1.lib
, несмотря на генерируемый файл prl. Любая помощь будет оценена!