ubuntu下用CLion首次跑C++
text/CMakeLists.txt中其中hello.cpp在/text/lib下,useHello.cpp在/text/下
# 设置你的CMake的最低版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
# 起一个项目名
project(text)
# 编译模式
set(CMAKE_BUILD_TYPE "Release")
# 编译主文件
# ADD_SUBDIRECTORY(lib)
# ADD_SUBDIRECTORY(src bin)
ADD_EXECUTABLE(sayhello useHello.cpp)
# 找主文件
# find_package()
# 添加头文件(即hello.cc所在的位置) ${PROJECT_SOURCE_DIR}指的是原文件的路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 编译动态链接库
# hello 决定输出为labhello.so
add_library(hello SHARED ${PROJECT_SOURCE_DIR}/src/hello.cpp)
# 与源文件建立联系
TARGET_LINK_LIBRARIES(sayhello hello)
# hello.h 放到/usr/local/include下面 .h-->FILES
INSTALL(FILES hello.h DESTINATION /home/zhe/usr/local/include)
# libhello.so 放到/usr/local/include下面 .so-->TARGETS
INSTALL(TARGETS hello DESTINATION /home/zhe/usr/local/lib)
其中,add_library(hello SHARED ${PROJECT_SOURCE_DIR}/lib/hello.cpp)的hello 决定输出为labhello.so
编写完后打开sayhello.cpp 运行就可以首次运行可能会提示需要 new Configuration
解决:在CMakeList.txt文件上 右键: Reload CMake Project
下面是助教提供的方案:在zhuoye/ch1下的text
问题来源完成3.4:4、 最后在工程目录下创建一个build文件夹,在build文件夹中输入cmake . .和sudo make install,然后在/build/bin文件中找到sayhello的可执行文件,
问题解决1:
图1-1
运行结果如下图所示:
图1-2
我的方案:在zhuoye/ch1下的ch0也会出现问题解决1的问题
完善后的方案为在zhuoye/ch1下的ch1
目录如下:
图1-3
其中:ch1/CMakeLists.text为:
# 设置你的CMake的最低版本(若是没有设置会给警告)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
# 起一个项目名
project(text)
# 添加外部文件夹
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(code bin)
ch1/src/CMakeLists.text为:
# 设置你的CMake的最低版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
# 起一个项目名
project(text)
# 编译动态链接库
# hello 决定输出为labhello.so (hello,c改为.cc或.cpp)
# (把老师给的hello.c和useHello.c改为.cc或者.cpp文件,,//否者会报ubuntu cmake Fatal error: iostream: No such file or directory)
ADD_LIBRARY(hello SHARED hello.cpp)
# hello.h 放到/usr/local/include下面 .h-->FILES
INSTALL(FILES hello.h DESTINATION /home/zhe/usr/local/include)
# libhello.so 放到/usr/local/include下面 .so-->TARGETS
INSTALL(TARGETS hello DESTINATION /home/zhe/usr/local/lib)
ch1/code/CMakeLists.text为:
# 设置你的CMake的最低版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
# 起一个项目名
project(text)
# 添加头文件(即hello.c所在的位置) ${PROJECT_SOURCE_DIR}指的是原文件的路径
include_directories(~/1/lianxi/1/ch1/src)
#include_directories(${PROJECT_SOURCE_DIR}/src) #会报错因为sayhello.cpp在code下,,如果在主文件下或在hello.h在其目录下(或在其子目录下)可以用${PROJECT_SOURCE_DIR}
# 编译主文件(useHello.c改为.cc或.cpp)
ADD_EXECUTABLE(sayhello useHello.cpp)
# 与源文件建立联系
TARGET_LINK_LIBRARIES(sayhello hello)
运行结果如下图1-4所示
图1-4