【发布时间】:2016-05-12 14:21:37
【问题描述】:
我正在尝试将 Makefile 项目转换为 cmake。
我的项目有一个可执行文件,它被构建并链接到一个内部共享库和一个外部共享库(可执行文件中对两者都有依赖关系)。
这是我的旧 Makefile(通用):
Include = -I$(PROJ_DIRECTORY)/include -I/${EXTERN}/lnInclude
Library = -L$(PROJ_DIRECTORY)/build -lshared -L$(EXTERN_LIBBIN) -lextern
CPPFLAGS = -D_GLIBCXX_DEBUG -DProjectRescource=$(PROJ_DIRECTORY)/resources -O0 -g3 -Wall -c -fpermissive -std=c++0x -fPIC -MMD -MP
CCC = g++
TARGET = ExecutableName
all: $(TARGET)
clean:
rm -f $(TARGET).o $(TARGET).d $(TARGET)
$(TARGET) : $(TARGET).o
$(CCC) -o $(TARGET) $(TARGET).o $(Library)
$(TARGET).o :
$(CCC) $(Include) $(CPPFLAGS) $(TARGET).cpp
这是我对 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)
当我运行可执行文件时,对包含目录中定义的函数的调用返回 -nan。有谁知道为什么?
【问题讨论】:
-
可能你忘了
libextern_init之类的东西? -
When I run the executable, calls to functions defined in the include directory return -nan.- 这取决于外部库为什么它的函数返回“-nan”。但我们对那个库一无所知。 -
检查 stackoverflow.com/questions/15100351/… 以获得正确的编译选项定义。