CMakelists.txt学习记录:https://blog.csdn.net/liudongdong19/article/details/81366624
我用了一个简单实验:简单的依赖关系成功了
这是我写的CMakeLists.txt
文件目录格式:
cmake_minimum_required( VERSION 2.8 )
# 娣诲姞c++11鏍囧噯鏀寔
set( CMAKE_CXX_FLAGS "-std=c++11" )
# 澹版槑涓€涓猚make宸ョ▼
project(abe )
MESSAGE(STATUS "Project: SERVER")
include_directories(${project_source_dir}/include
${project_source_dir}/pbc
/usr/local/include
)
link_directories(
/usr/lib
/usr/local/lib
)
SET(SOURCE_FILES
cpp/abe_policy.cpp
cpp/base64.cpp
cpp/common.cpp
cpp/libfenc.cpp
cpp/libfenc_ABE_commom.cpp
cpp/libfenc_group_params.cpp
cpp/libfenc_LSSS.cpp
cpp/libfenc_LSW.cpp
cpp/libfenc_utils.cpp
cpp/libfenc_WatersCP.cpp
cpp/sha1.cpp
)
ADD_LIBRARY(base ${SOURCE_FILES})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
add_executable(benchmark benchmark.cpp)
target_link_libraries(benchmark base)
编译时错误:
路径错误,无法找到头文件。
你的项目中引入的stdint.h 头文件是Microsoft Visual C++编译环境中的头文件,在你机器的目录下打开这个文件你就会发现最开始的代码是这样的:
#ifndef _MSC_VER // [
#error "Use this header only with Microsoft Visual C++ compilers!"
#endif // _MSC_VER ]
低版本的LLVM中没有这个头文件,不知道这个头文件是不是你自己下载的而且刚好下载错了。
查看编译器版本的方法:
1、单击你的工程,选择TARGET下的目标文件
2、在选项卡中选择“Build Settings”选项
3、往下查找类似"Apple LLVM complier: X.X - Code generation" ,这里的x.x为你的xcode默认的LLVM编译器版本
删除工程里面的stdint.h,就可以了
lbc安装路径:
我之前删了policy_abe.cpp文件导致错误;重新加入就往成了
CMakeList.txt文件如下:
cmake_minimum_required( VERSION 2.8 )
# 娣诲姞c++11鏍囧噯鏀寔
set( CMAKE_CXX_FLAGS "-std=c++11" ) //编译器声明
# 澹版槑涓€涓猚make宸ョ▼
project(abe )
MESSAGE(STATUS "Project: SERVER")
include_directories( //头文件包含,包括第三方文件
/home/pi/abe/include
/usr/local/include/pbc
#/home/pi/abe/pbc
/usr/local/include
)
link_directories( //lib动态库文件包含
/usr/lib
/usr/local/lib
)
SET(SOURCE_FILES //设置源文件名
cpp/abe_policy.cpp
cpp/base64.cpp
cpp/common.cpp
cpp/libfenc.cpp
cpp/libfenc_ABE_common.cpp
cpp/libfenc_group_params.cpp
cpp/libfenc_LSSS.cpp
cpp/libfenc_LSW.cpp
cpp/libfenc_utils.cpp
cpp/libfenc_WatersCP.cpp
cpp/sha1.cpp
)
#ADD_LIBRARY(base SHARED ${SOURCE_FILES})
ADD_LIBRARY(base SHARED ${SOURCE_FILES}) //编译共享库
#target_link_libraries(${SOURCE_FILES}
# ~/.local/lib/libpbc.so
# )
target_link_libraries(base pbc gmp) //链接第三方库
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) //设置输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) //设置输出目录
add_executable(benchmark benchmark.cpp) //主函数可执行文件
target_link_libraries(benchmark base) //链接之前编译的库
在读取一个文件函数那,可能是路径,我修改了工程结构,相对路径错误:我重新copy了工程,没改结构还是出现了相同的错误: