在linux下使用cmake+make编译,报"未定义的引用"错误,错误的CMakeLists.txt如下:
cmake_minimum_required(VERSION 2.6)
project(hellocmake)
LINK_DIRECTORIES(
/home/test/code/lib.debug/Dependence/libuuid-1.0.3
)
target_link_libraries(${PROJECT}
/home/test/code/lib.debug/Dependence/libuuid-1.0.3/libuuidd.a
)
add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME}
PRIVATE
/home/test/code/Dependence/libuuid-1.0.3
)
main.cpp内容如下:
#include <stdio.h>
#include <uuid/uuid.h>
extern void uuid_generate(uuid_t out);
int main()
{
uuid_t buf, tst;
char str[100];
uuid_generate(buf);
uuid_unparse(buf, str);
printf("UUID generate = %s\n", str);
printf("hello,cmake!");
char ch =getchar();
}
解决办法:将LINK_DIRECTORIES、target_link_libraries移到add_executable后面,使用${PROJECT_NAME},修改后如下:
cmake_minimum_required(VERSION 2.6)
project(hellocmake)
add_executable(${PROJECT_NAME} main.cpp)
LINK_DIRECTORIES(${PROJECT_NAME}
/home/test/code/lib.debug/Dependence/libuuid-1.0.3
)
target_link_libraries(${PROJECT_NAME}
/home/test/code/lib.debug/Dependence/libuuid-1.0.3/libuuidd.a
)
target_include_directories(${PROJECT_NAME}
PRIVATE
/home/test/code/Dependence/libuuid-1.0.3
)