2016-05-12 2 views
4

Я пытаюсь преобразовать проект Makefile в cmake.Преобразование Makefile в CMake

В моем проекте есть исполняемый файл, который создается и связан как с внутренней общей библиотекой, так и с внешней общей библиотекой (в исполняемом файле есть зависимости).

Вот мой старый Makefile (обобщенно):

Вот моя попытка CMakeLists.txt (обобщенно):

include_directories(${PROJECT_SOURCE_DIR}/include/) 
add_executable(test1 test1.cpp) 
set (CMAKE_CXX_FLAGS "-D_GLIBCXX_DEBUG -DProjectRescource=${PROJECT_SOURCE_DIR}/resources -O0 -g3 -Wall -fpermissive -std=c++0x -fPIC -MMD -MP") 
include_directories($ENV{EXTERN_INCLUDE}/lnInclude) 
target_link_libraries(test1 "$ENV{EXTERN_LIBBIN}/libextern.so" Project) 

При запуске исполняемого файла, вызовы функций, определенных в возвращаемый каталог include -nan. Кто-нибудь знает, почему?

+0

может быть вы забыли что-то вроде 'libextern_init'? – fghj

+0

'Когда я запускаю исполняемый файл, вызывает функции, определенные в каталоге include -nan.', - это зависит от внешней библиотеки, почему ее функции возвращают« -nan ». Но мы ничего не знаем об этой библиотеке. – Tsyvarev

+1

Проверьте http://stackoverflow.com/questions/15100351/changing-cmake-cxx-flags-in-project правильные определения параметров компиляции. – user3159253

ответ

2

Причина возникновения проблемы связана с порядком привязки разделяемых библиотек.

я был в состоянии решить эту проблему, изменив последнюю строку CMakeLists.txt на:

target_link_libraries(test1 Project "$ENV{EXTERN_LIBBIN}/libextern.so") 
Смежные вопросы