hw01
hw01 copied to clipboard
高性能并行编程与优化 - 第01讲回家作业
使用宏是为了实现单文件效果,方便用户使用。当宏没有被定义时,所涉及的函数不会被定义,当宏被定义后,相应的函数才会被定义,用户才可以使用。
PTAL~
在Win上实现,在stb_image_write.cpp文件中包含stb_image_write.h头文件,以及对STB_IMAGE_WRITE_IMPLEMENTATION的宏定义,从而使得在头文件中对函数的实现。 在cmakelist.txt中定义项目名称,设置静态链接,并且以PUBLIC参数实现对头文件路径的包含,使得在主项目中不需要重复包含子项目的头文件目录,学到了~~ 老师,有一个问题,如果限制不能生成stb_image_write.cpp,如何书写CMakelist来实现头文件生成静态链接呢,虽然我觉得这样的话,可以直接包含头文件会更直接一些,但还是好奇实现的方式。
在stbiw文件夹下新建cpp,定义宏STB_IMAGE_WRITE_IMPLEMENTATION,从而保证实现的stbiw库中包含stbi_write_png() 的实现, 在库文件中的CMakeLists.txt中add_librarary,同时将当前路径作为stbiw的头文件的搜索路径,这样引用这个它的CMake就可以自动添加这个路径。
- 增加了编译警告 - 同时编译动态库和静态库 - 尽可能用变量替代固定路径 - 在mac和ubuntu 16.04上测试通过 ps. 期待老师下次课程
去了解了下mandelbrot,好好看啊……
作业1: 添加std_image_write.cpp, 定义宏STB_IMAGE_WRITE_IMPLEMENTATION并include stb_image_write.h文件生成静态库。同时附上程序输出的两个png文件。期待后续课程!
我只试了Linux下的编译。 定义`STB_IMAGE_WRITE_IMPLEMENTATION`宏的原因: 相关函数的声明、定义都放在了`stb_image_write.h`文件中,所以有多个文件都`include`了头文件的时候会有重复定义的问题。 请教一个问题: 如果`.h`文件写声明,`.cpp`文件写定义的话,`include`语句放在哪个文件比较好?
请问下 在这里 `add_library(stbiw STATIC stb_image_write.cpp)` 把STATIC换成SHARED,是不是可以少链接一份头文件