Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CMake构建确定性库 我创建了一个简单的CuffeC++库实例,我想使它的构建具有确定性(即同一机器中的相同代码总是用相同的文件哈希生成相同的库)。_C++_Cmake_Deterministic - Fatal编程技术网

使用CMake构建确定性库 我创建了一个简单的CuffeC++库实例,我想使它的构建具有确定性(即同一机器中的相同代码总是用相同的文件哈希生成相同的库)。

使用CMake构建确定性库 我创建了一个简单的CuffeC++库实例,我想使它的构建具有确定性(即同一机器中的相同代码总是用相同的文件哈希生成相同的库)。,c++,cmake,deterministic,C++,Cmake,Deterministic,Main.cpp #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; } CMAKE_CXX_ARCHIVE_FINISH为我工作 CMakeLists.txt: cmake_minimum_required(VERSION 3.10) project(Test) SET(CMAKE_CXX

Main.cpp

#include <iostream>
int main()
{
        std::cout << "Hello World!" << std::endl;
        return 0;
}

CMAKE_CXX_ARCHIVE_FINISH为我工作

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(Test)
SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> -crD <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> -rD <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
add_library(Test Main.cpp)
cmake_最低要求(3.10版)
项目(测试)
设置(CMAKE\U CXX\U存档\U创建“-crD”)
设置(CMAKE\U CXX\U存档\U追加“-rD”)
设置(CMAKE\U CXX\U存档\U完成“-D”)
添加_库(Test Main.cpp)

您看过吗?看过@DanM。但对于我的场景,它没有解决方案。SOURCE_DATE_EPOCH用于时间宏,ZERO_AR_DATE不用于gcc。无论如何,我试着在我的环境中设置它们,但没有运气。
user@ip:/x01/user/myWork/test/build>diff <(strings libTest.a) <(strings ../backup/libTest.a)
2c2
< /               1596642127  0     0     0       14        `
---
> /               1596641163  0     0     0       14        `
ar --version
GNU ar version 2.27-41.base.el7

gcc --version
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

cmake --version
cmake version 3.12.2

make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
cmake_minimum_required(VERSION 3.10)
project(Test)
SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> -crD <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> -rD <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
add_library(Test Main.cpp)